需要关于 LC_COLLATE 和 LC_CTYPE 的一些说明

Need some clarification about LC_COLLATE and LC_CTYPE

我已经阅读了官方 postgres 文档以了解 LC_COLLATE 和 LC_TYPE。但是,我还是没有理解正确。

任何人都可以帮助我理解这些概念和它们的影响,特别是当我们试图加载数据时,这些数据在编码 WE8ISO8859P15 的 oracle 中,在 postgres 中编码为 utf-8 并且 collation/ctype 是 en_US.UTF-8.

提前致谢

这是locale的一部分,国语支持,与encoding不同(但locale必须属于encoding)

LC_CTYPE 决定哪些字符是字母、数字、space 字符、标点符号等。不同的语言对此有不同的理解。

LC_COLLATE 确定字符串的比较和排序方式。

第一个对 PostgreSQL 的行为影响不大,但第二个非常相关:它决定了字符串列上的 b-tree 索引如何排序(这就是为什么它在创建数据库后不能更改)以及 ORDER BY 默认情况下如何对字符串进行排序(用户直接可见)。