关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
定义一个新的排序规则。
CREATE COLLATION [ IF NOT EXISTS ] <name> (
[ LOCALE = <locale>, ]
[ LC_COLLATE = <lc_collate>, ]
[ LC_CTYPE = <lc_ctype>, ]
[ PROVIDER = <provider>, ]
[ DETERMINISTIC = <boolean>, ]
[ VERSION = <version> ])
CREATE COLLATION [ IF NOT EXISTS ] <name> FROM <existing_collation>
CREATE COLLATION 命令用于定义新的排序规则,可基于指定的操作系统区域设置创建,或通过复制现有排序规则实现。
创建排序规则时,必须对目标模式拥有 CREATE 权限。
CREATE COLLATION 命令会在 pg_collation 系统目录上获取 SHARE ROW EXCLUSIVE 锁(该锁会引发自冲突),因此同一时间仅能执行一条 CREATE COLLATION 命令。
使用 DROP COLLATION 删除用户自定义排序规则。
有关数据库排序规则支持的详细信息,请参阅 PostgreSQL 文档中的 排序规则支持。
使用 libc 排序规则提供程序时,语言环境必须适用于当前数据库编码。具体规则请参阅CREATE DATABASE。
创建基于操作系统区域设置 fr_FR.utf8 的排序规则(假设当前数据库编码为 UTF8):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
使用icu提供程序创建基于德语电话簿排序规则的排序规则:
CREATE COLLATION german_phonebook (provider = icu, locale = 'de-u-co-phonebk');
从现有排序规则创建排序规则:
CREATE COLLATION german FROM "de_DE";
在应用程序中能够使用与操作系统无关的排序规则名称会很方便。
SQL标准中存在CREATE COLLATION语句,但其功能仅限于复制现有排序规则。创建新排序规则的语法属于数据库扩展功能。