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_COLLATELC_CTYPE的快捷方式。如果指定此选项,则不能指定这些参数中的任何一个。
  • lc_collate

    • 将指定的 os 语言环境用于LC_COLLATE语言环境类别。
  • lc_ctype

    • 将指定的 os 语言环境用于LC_CTYPE语言环境类别。
  • provider

    • 指定用于与此排序规则关联的语言环境服务的提供程序。可能的值为:icu libclibc是默认值。可用的选项取决于 os 和构建选项。
  • version

    • 指定要与排序规则一起存储的版本字符串。通常,应将其省略,这将导致根据 os 提供的排序规则的实际版本来计算版本。 pg_upgrade打算使用此选项从现有安装复制版本。

有关如何处理归类版本不匹配的信息,另请参见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 扩展。

See Also

ALTER COLLATION, DROP COLLATION