指定区域设置:长格式
Vertica 支持指定 collation
关键字的长格式。Vertica 将长格式处理扩展到可以接受排序规则实参。
语法
[language][_script][_country][_variant][@collation‑spec]
注意
提供了以下语法选项:
-
区域设置规范字符串不区分大小写。例如,
en_us
和EN_US
是等效的。 -
您可以使用连字符代替下划线。例如: [
-script
]
参数
- language
- 代表特定语言的小写两字母或三字母代码。例如,西班牙语为
es
,英语为en
,法语为fr
。两字母语言代码使用 ISO-639 标准。 -
_script
- 可选的四字母脚本代码,跟在语言代码之后。如果指定此项,则此代码应为 Unicode ISO 15924 注册表中列出的有效脚本代码。
-
_country
- 通用语言内针对特定国家/地区或区域的特定语言约定。例如,许多国家/地区都说法语,但每个国家/地区的货币是不同的。若要允许特定的地理、政治或文化区域存在这些差异,可通过大写的两字母代码指定区域设置。例如,
FR
代表法国,CA
代表加拿大。两字母国家/地区代码使用 ISO-3166 标准。 -
_variant
- 同一个国家/地区内使用的语言约定也可能有所不同。例如,有多个欧洲国家/地区使用欧元作为货币,但各个国家/地区的货币仍在流通。若要处理某个语言和国家/地区对内的变化,请添加第三个代码 — 变体代码。变体代码可以是任意代码,完全特定于应用程序。对于那些支持欧元货币的区域设置,ICU 会向其区域设置目标中添加
_EURO
。变体可以具有任意数量的带下划线的关键字。例如,EURO_WIN
是 Windows 计算机上欧元货币的变体。变体代码的另一个用途是指定区域设置的排序规则(排序顺序)。例如,
es__TRADITIONAL
区域设置使用传统的排序顺序,该排序顺序与西班牙的默认现代排序不同。 -
@collation‑spec
- Vertica 仅按如下所示支持关键字
collation
:@collation=collation‑type[;arg]...
排序规则可以指定一个或多个以分号分隔的实参,如下所述。
排序规则类型 设置为以下值之一:
-
big5han
:拉丁文按拼音排序,CJK 字符(在中文中使用)按 big5 字符集排序。 -
dict
:字典样式的排序(例如,在僧伽罗语中)。 -
direct
:印地语变体。 -
gb2312/gb2312han
:拉丁文按拼音排序,CJK 字符(在中文中使用)按 gb2312han 字符集排序。 -
phonebook
:电话簿样式的排序(例如,在德语中)。 -
pinyin
:拉丁文和 CJK 字符按拼音排序;即,将 CJK 字符逐个字符音译为拼音(在中文中使用)后进行顺序。 -
reformed
:改良后的排序规则(例如,在瑞典语中)。 -
standard
:每种语言的默认排序。对于 root,其为 [UCA] 顺序;对于每个其他区域设置,其与 UCA(Unicode 排序规则算法)排序相同,只是会对相应语言的某些字符进行适当的修改。下面是某些区域设置的其他选项;它们仅在某些区域设置中有效。 -
stroke
:拉丁文按拼音排序,不支持 CJK 字符(在中文中使用)的笔划顺序。 -
traditional
:传统样式的排序(例如,在西班牙语中)。 -
unihan
:拉丁文按拼音排序,不支持 CJK 字符(在中文中使用)的 Unihan 部首笔划排序。 -
binary
:Vertica 默认,提供 UTF-8 八位字节排序。
注意:
-
排序规则可能默认为 root(ICU 默认排序规则)。
-
排序规则关键字及其同义词的值无效不会导致错误。例如,以下代码不会生成错误,只是会忽略无效值:
=> \locale en_GB@collation=xyz INFO 2567: Canonical locale: 'en_GB@collation=xyz' Standard collation: 'LEN' English (United Kingdom, collation=xyz)
有关排序选项的详细信息,请参阅 Unicode 区域设置数据标记语言 (LDML)。
-
排序规则实参
collation
可以指定以下一个或多个实参:
区域设置处理说明
-
如果前缀可被解析为已知的区域设置版本,则会接受错误的区域设置字符串。
例如,以下代码有效,因为可对语言进行解析:
=> \locale en_XX INFO 2567: Canonical locale: 'en_XX' Standard collation: 'LEN' English (XX)
以下代码无效,因为无法对语言进行解析:
=> \locale xx_XX xx_XX: invalid locale identifier
-
en_US.UTF-8
之类的 POSIX 类型区域设置在忽略编码部分“UTF-8”时有效。 -
Vertica 使用 icu4c-4_2_1 库及某些扩展来支持基本的区域设置/排序规则处理。这不满足 当前的区域设置处理标准:(https://tools.ietf.org/html/rfc5646)。
示例
使用 phonebook
样式的排序规则指定德国使用的德国区域设置 (de
):
=> \locale de_DE@collation=phonebook
INFO 2567: Canonical locale: 'de_DE@collation=phonebook'
Standard collation: 'KPHONEBOOK_LDE'
German (Germany, collation=Phonebook Sort Order)
Deutsch (Deutschland, Sortierung=Telefonbuch-Sortierregeln)
指定德国使用的德国区域设置 (de
),其中 phonebook
样式的排序规则和强度设置为“次要 (secondary)”:
=> \locale de_DE@collation=phonebook;colStrength=secondary
INFO 2567: Canonical locale: 'de_DE@collation=phonebook'
Standard collation: 'KPHONEBOOK_LDE_S2'
German (Germany, collation=Phonebook Sort Order)
Deutsch (Deutschland, Sortierung=Telefonbuch-Sortierregeln)