字符串排序顺序(LC_COLLATE 和 LC_CTYPE)

2023-12-27

显然 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”)。

问题1:创建数据库时只需要设置LC_COLLATE(字符串排序顺序)吗?

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

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


您描述的排序顺序是大多数语言环境中的标准。 自己尝试一下:

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

当您使用以下命令初始化数据库集群时initdb http://www.postgresql.org/docs/8.4/interactive/app-initdb.html你可以选择一个区域设置--locale=some_locale。就我而言是--locale=de_AT.UTF-8。如果您没有指定任何内容,则区域设置将从环境继承 - 将使用您当前的系统区域设置。

集群的模板数据库将设置为该区域设置。当您创建新数据库时,它会继承模板中的设置。通常情况下你不必担心anything,一切都正常。

Read the chapter on CREATE DATABASE http://www.postgresql.org/docs/8.4/interactive/sql-createdatabase.html for more. If you want to speed up text search with indexes, be sure to read about operator classes http://www.postgresql.org/docs/8.4/static/indexes-opclass.html, as well.
All links to version 8.4, as you specifically asked for that.


In PostgreSQL 9.1或者稍后,有校对支持 http://www.postgresql.org/docs/current/interactive/collation.html允许更灵活地使用排序规则:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串排序顺序(LC_COLLATE 和 LC_CTYPE) 的相关文章

随机推荐