ICU 指定不同的LDML 整理设置。其中一些看起来很有趣,尤其是关于大小写和口音的那些,
- “忽略重音”:
strength=primary
- “忽略重音”但要考虑大小写:
strength=primary caseLevel=on
- “忽略大小写”:
strength=secondary
- “忽略标点符号”(完全):
strength=tertiary alternate=shifted
- “忽略标点符号”但区分标点符号:
strength=quaternary alternate=shifted
可能是更好的做事方法
您还可以在此处查看这些文档。PostgreSQL 10 ICU 整理支持是否可以使用这些 ICU 选项和设置?
CREATE COLLATION special (provider = icu, locale = 'en@strength=primary');
SELECT 'Å' LIKE 'A' COLLATE "special"; # returns false
Run Code Online (Sandbox Code Playgroud)
我也试过CLDR BCP47
从 ICU 54 开始,排序规则属性也可以通过语言环境关键字指定,使用旧的语言环境扩展语法 ("
el@colCaseFirst=upper
") 或语言标记语法 ("el-u-kf-upper")。关键字和值不区分大小写。请参阅LDML 归类规范、归类设置和列出有效归类关键字及其值的数据文件。(不支持已弃用的属性 kh/colHiraganaQuaternary 和 vt/variableTop。)
为此,这看起来是对的
CREATE COLLATION special (provider = icu, locale = 'en-ks-level1');
SELECT …
Run Code Online (Sandbox Code Playgroud) postgresql collation postgresql-10 international-components-unicode