ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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](#calibre_link-111)了解更精确的信息。) `_lc_ctype_` 使用指定操作系统中的字符编码来设置`LC_CTYPE`。 字符编码对当前数据库来说必须是可使用的。(参见[CREATE DATABASE](#calibre_link-111)了解更精确的信息。) `_existing_collation_` 复制已存在的排序规则。新的排序规则将和已存在的规则有相同的属生,但它是一个独立的对像。 ## 注意 使用`DROP COLLATION`命令可以删除一个用户定义的排序规则。 参见[Section 22.2](#calibre_link-667)了解更多在PostgreSQL中支持的排序规则。 ## 例子 根据操作系统中的系统字符编码`fr_FR.utf8`来创建一个排序规则(假定当前数据库的编码是`UTF8`): ``` CREATE COLLATION french (LOCALE = 'fr_FR.utf8'); ``` 从一个已存在的排序规则中复制一个新的排序规则: ``` CREATE COLLATION german FROM "de_DE"; ``` 这对在应用程序中使用独立于操作系统的排序规则名是很方便的。 ## 兼容性 在SQL标准中有`CREATE COLLATION`命令,但它仅限于从已存在的排序规则中拷贝。 允许创建一个新的排序规则是PostgreSQL的扩展。 ## 参见 [ALTER COLLATION](#calibre_link-558), [DROP COLLATION](#calibre_link-555)