CREATE COLLATION
Name
CREATE COLLATION -- 定义一个新的排序规则
Synopsis
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
命令可以删除一个用户定义的排序规则。
参见Section 22.2了解更多在PostgreSQL中支持的排序规则。
例子
根据操作系统中的系统字符编码fr_FR.utf8
来创建一个排序规则(假定当前数据库的编码是UTF8
):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
从一个已存在的排序规则中复制一个新的排序规则:
CREATE COLLATION german FROM "de_DE";
这对在应用程序中使用独立于操作系统的排序规则名是很方便的。
兼容性
在SQL标准中有CREATE COLLATION
命令,但它仅限于从已存在的排序规则中拷贝。 允许创建一个新的排序规则是PostgreSQL的扩展。