需要对 LC_COLLATE 和 LC_CTYPE 进行一些说明

时间:2021-07-21 13:01:58

标签: postgresql oracle character-encoding character-set

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

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

提前致谢

1 个答案:

答案 0 :(得分:1)

这是“locale”的一部分,国家语言支持,与编码不同(但locale必须属于编码)。

LC_CTYPE 确定哪些字符是字母、数字、空格字符、标点符号等。不同的语言对此有不同的看法。

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

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