华为云云数据库rdsLC_COLLATE和LC_CTYPE选项_云淘科技

本节将介绍如何通过CREATE DATABASE命令指定LC_COLLATE(字符排序规则)和LC_CTYPE(字符分类)。

查询字符集支持的LC_COLLATE和LC_CTYPE信息

执行下列SQL语句查询字符排序规则和字符分类。

SELECT pg_encoding_to_char(collencoding) AS encoding,collname,collcollate AS "LC_COLLATE",collctype AS "LC_CTYPE" FROM pg_collation;

encoding为空时,表示当前LC_COLLATE支持所有的字符集。

设置数据库的本土化信息(collate)

本土化信息包括LC_COLLATE(字符排序规则) 和 LC_CTYPE(字符分类),详细介绍请参考官方文档。

LC_COLLATE(字符排序规则)

默认en_US.utf8。

不同的排序规则下,相同字符串的比较其结果可能是不同的。

例如,在en_US.utf8下, SELECT ‘a’>’A’; 执行结果为false,但在’C’下,SELECT ‘a’>’A’; 结果为true。如果数据库从“O”迁移到RDS for PostgreSQL,数据库排序集需使用’C’才能得到一致的预期。支持的排序规则可以查询系统表 pg_collation。

LC_CTYPE(字符分类)

字符集中的字符分类,用来区分字母、数字、及大小写等,支持的字符分类可以查询系统表 pg_collation。

使用方式

创建一个 LC_COLLATE 和 LC_CTYPE 分别为 zh_CN.utf8 的数据库,其命令如下所示。

CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;

如果指定的LC_COLLATE与字符集不兼容,则会报如下错误信息。

指定的LC_COLLATE和LC_CTYPE必须与目标字符集兼容,否则会报错。
目前无法直接通过ALTER DATABASE命令修改已有数据库的LC_COLLATE和LC_CTYPE信息,但可以通过创建新的数据库,然后导出再导入数据的方式进行修改。

父主题: CREATE DATABASE选项说明

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家