字符串排序顺序(LC_COLLATE和LC_CTYPE)。[英] String sort order (LC_COLLATE and LC_CTYPE)

本文是小编为大家收集整理的关于字符串排序顺序(LC_COLLATE和LC_CTYPE)。的处理方法,想解了字符串排序顺序(LC_COLLATE和LC_CTYPE)。的问题怎么解决?字符串排序顺序(LC_COLLATE和LC_CTYPE)。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

显然 PostgreSQL 从 8.4 版本开始允许每个数据库使用不同的语言环境所以我去文档阅读了有关语言环境的信息 (http://www.postgresql.org/docs/8.4/static/locale.html).

字符串排序顺序是我特别感兴趣的(我希望字符串排序为"A a b c D d",而不是"A B C ... Z a b c").

问题一:创建数据库时是否只需要设置LC_COLLATE(字符串排序)?

我还阅读了关于 LC_CTYPE(字符分类(什么是字母?它的大写等效项?))

问题 2:谁能解释一下这是什么意思?

推荐答案

您描述的排序顺序是大多数语言环境的标准.自己试试吧:

SELECT regexp_split_to_table('D d a A c b', ' ') ORDER BY 1;

当您使用 initdb 初始化数据库集群时,您可以可以使用 --locale=some_locale 选择语言环境.就我而言,它是 --locale=de_AT.UTF-8.如果您未指定任何从环境继承的语言环境 - 将使用您当前的系统语言环境.

集群的模板数据库将设置为该语言环境.创建新数据库时,它会从模板继承设置.通常您不必担心任何事情,一切都会正常进行.

阅读创建数据库章节了解更多信息.如果您想使用索引加速文本搜索,请务必阅读 运算符类,以及.
到 8.4 版的所有链接,如您特别要求的那样.

<小时>

在 PostgreSQL 9.1 或更高版本中,有 collat​​ion支持,允许更灵活地使用排序规则:

<块引用>

排序规则功能允许指定排序顺序和字符数据每列甚至每操作的分类行为.这缓解了 LC_COLLATE 和 LC_CTYPE数据库的设置在创建后无法更改.

本文地址:https://www.itbaoku.cn/post/1763912.html