On this page
CREATE COLLATION
创建排序-定义新的排序规则
Synopsis
CREATE COLLATION [ IF NOT EXISTS ] name (
[ LOCALE = locale, ]
[ LC_COLLATE = lc_collate, ]
[ LC_CTYPE = lc_ctype, ]
[ PROVIDER = provider, ]
[ VERSION = version ]
)
CREATE COLLATION [ IF NOT EXISTS ] name FROM existing_collation
Description
CREATE COLLATION
使用指定的 os 区域设置或通过复制现有的排序规则来定义新的排序规则。
为了能够创建排序规则,您必须在目标架构上具有CREATE
特权。
Parameters
IF NOT EXISTS
- 如果已经存在相同名称的排序规则,请不要抛出错误。在这种情况下发出通知。请注意,不能保证现有的排序规则类似于将要创建的排序规则。
name
- 排序规则的名称。排序规则名称可以是模式限定的。如果不是,则在当前模式中定义排序规则。排序规则名称在该架构中必须唯一。 (系统目录可以包含与其他编码具有相同名称的归类,但是如果数据库编码不匹配,则将忽略这些归类.)
locale
- 这是一次设置
LC_COLLATE
和LC_CTYPE
的快捷方式。如果指定此选项,则不能指定这些参数中的任何一个。
- 这是一次设置
lc_collate
- 将指定的 os 语言环境用于
LC_COLLATE
语言环境类别。
- 将指定的 os 语言环境用于
lc_ctype
- 将指定的 os 语言环境用于
LC_CTYPE
语言环境类别。
- 将指定的 os 语言环境用于
provider
version
- 指定要与排序规则一起存储的版本字符串。通常,应将其省略,这将导致根据 os 提供的排序规则的实际版本来计算版本。
pg_upgrade
打算使用此选项从现有安装复制版本。
- 指定要与排序规则一起存储的版本字符串。通常,应将其省略,这将导致根据 os 提供的排序规则的实际版本来计算版本。
有关如何处理归类版本不匹配的信息,另请参见ALTER COLLATION。
existing_collation
- 要复制的现有排序规则的名称。新的归类将具有与现有归类相同的属性,但是它将是一个独立的对象。
Notes
使用DROP COLLATION
删除用户定义的归类。
有关如何创建归类的更多信息,请参见Section 23.2.2.3。
使用libc
归类提供程序时,语言环境必须适用于当前数据库编码。具体规则请参见CREATE DATABASE。
Examples
要从 os 区域设置fr_FR.utf8
创建排序规则(假设当前数据库编码为UTF8
):
CREATE COLLATION french (locale = 'fr_FR.utf8');
要使用德语电话簿排序 Sequences 使用 ICU 提供程序创建归类,请执行以下操作:
CREATE COLLATION german_phonebook (provider = icu, locale = 'de-u-co-phonebk');
要从现有归类中创建归类:
CREATE COLLATION german FROM "de_DE";
能够在应用程序中使用独立于 os 的排序规则名称可能很方便。
Compatibility
SQL 标准中有一个CREATE COLLATION
语句,但仅限于复制现有的排序规则。创建新排序规则的语法是 PostgreSQL 扩展。