CREATE COLLATION
名称
CREATE COLLATION -- 定义一个新的排序规则
大纲
CREATE COLLATION name (
[ LOCALE = locale, ]
[ LC_COLLATE = lc_collate, ]
[ LC_CTYPE = lc_ctype ]
)
CREATE COLLATION name FROM existing_collation
描述
CREATE COLLATION使用指定操作系统中的编码设置定义一个新的排序规则,或是从一个已存在的排序规则中进行复制。
要创建一个排序规则,你必须在目标模式中有CREATE权限。
参数
- name
排序规则的名称。排序规则的名称可以有模式修饰符。如果没有,则排序规则是定义在当前模式中。
另外排序规则在指定的模式中名称必须是唯一的。
(系统目录中允许含有不同内部字符编码的相同排序规则名,如果是数据库的编码不相匹配,则它们会被忽略。)
- locale
这是一次性设置LC_COLLATE和LC_CTYPE的快捷方式。
如果你定义了这个变量,就不能定义其他两个变量了。
- lc_collate
使用指定操作系统中的字符编码来设置LC_COLLATE。
字符编码对当前数据库来说必须是可使用的。(参见CREATE DATABASE了解更精确的信息。)
- lc_ctype
使用指定操作系统中的字符编码来设置LC_CTYPE。
字符编码对当前数据库来说必须是可使用的。(参见CREATE DATABASE了解更精确的信息。)
- existing_collation
复制已存在的排序规则。新的排序规则将和已存在的规则有相同的属生,但它是一个独立的对像。
注意
使用DROP COLLATION命令可以删除一个用户定义的排序规则。
参见第 22.2 节了解更多在PostgreSQL中支持的排序规则。
例子
根据操作系统中的系统字符编码fr_FR.utf8来创建一个排序规则(假定当前数据库的编码是UTF8):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
从一个已存在的排序规则中复制一个新的排序规则:
CREATE COLLATION german FROM "de_DE";
这对在应用程序中使用独立于操作系统的排序规则名是很方便的。
兼容性
在SQL标准中有CREATE COLLATION命令,但它仅限于从已存在的排序规则中拷贝。
允许创建一个新的排序规则是PostgreSQL的扩展。