问题报告 纠错本页面

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_COLLATELC_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的扩展。

参见

ALTER COLLATION, DROP COLLATION