显然 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(使用前将#替换为@)