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

问题描述 投票:0回答:2

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

任何人都可以帮助我理解这些概念及其影响,特别是当我们尝试加载 oracle 编码为 WE8ISO8859P15 且 postgres 编码为 utf-8 且排序规则/ctype 为 en_US.UTF-8 的数据时。

提前致谢

postgresql oracle character-encoding character-set
2个回答
7
投票

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

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

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

第一个对 PostgreSQL 的行为影响不大,但第二个非常相关:它决定字符串列上的 B 树索引如何排序(这就是为什么它在创建数据库后无法更改)以及如何排序

ORDER BY 
默认对字符串进行排序(用户直接可见)。


0
投票

LC_CTYPE
影响
lower()
upper()
SQL 函数的输出。 C 字符类型不会更改非 ASCII 字符的大小写,例如重音字母。 en_US.utf8 可以。

© www.soinside.com 2019 - 2024. All rights reserved.