Babelfish 支持的排序规则
使用 Babelfish 创建 Aurora PostgreSQL 数据库集群时,请为数据选择排序规则。排序规则 指定以给定的书面人类语言生成文本或字符的排序顺序和位模式。排序规则包括用于比较一组给定位模式的数据的规则。排序规则与本地化有关。不同的区域设置会影响字符映射、排序顺序等。排序规则属性反映在各种排序规则的名称中。有关属性的信息,请参阅 Babelfish collation attributes table。
Babelfish 将 SQL Server 排序规则映射到 Babelfish 提供的类似排序规则。Babelfish 使用文化敏感的字符串比较和排序顺序预先定义了 Unicode 排序规则。Babelfish 还提供了一种将 SQL Server 数据库中的排序规则转换为最接近匹配的 Babelfish 排序规则的方法。针对不同的语言和区域提供了特定于区域设置的排序规则。
某些排序规则指定了与客户端编码对应的代码页。根据每个输出列的排序规则,Babelfish 会自动从服务器编码转换为客户端编码。
Babelfish 支持 Babelfish supported collations table中列出的排序规则。Babelfish 将 SQL Server 排序规则映射到 Babelfish 提供的类似排序规则。
Babelfish 使用 International Components for Unicode 排序规则库的 153.80 版本。有关 ICU 排序规则的更多信息,请参阅 ICU 文档中的排序规则
控制排序规则和区域设置的数据库集群参数
以下参数会影响排序规则行为。
- babelfishpg_tsql.default_locale
此参数指定排序规则使用的原定设置区域设置。此参数与 Babelfish collation attributes table中列出的属性结合使用,以便为特定语言和区域自定义排序规则。此参数的默认值为
en-US
。原定设置区域设置适用于以“BBF”开头的所有 Babelfish 排序规则名称,以及映射到 Babelfish 排序规则的所有 SQL Server 排序规则。在现有 Babelfish 数据库集群上更改此参数的设置不会影响现有排序规则的区域设置。有关排序规则的列表,请参阅 Babelfish supported collations table。
- babelfishpg_tsql.server_collation_name
此参数指定服务器(Aurora PostgreSQL 数据库集群实例)和数据库的原定设置排序规则。默认值为
sql_latin1_general_cp1_ci_as
。server_collation_name
必须是一种CI_AS
排序规则,是因为在 T-SQL 中,服务器排序规则决定了标识符的比较方式。当您创建 Babelfish 数据库集群时,可以从可供选择的列表中选择 Collation name(排序规则名称)。其中包括 Babelfish supported collations table中列出的排序规则。请勿在 Babelfish 数据库创建之后修改
server_collation_name
。
您在创建 Babelfish for Aurora PostgreSQL 数据库集群时选择的设置存储在与此集群关联且与这些参数对应的数据库集群参数组中,并设置其排序规则行为。
确定性和非确定性排序规则和 Babelfish
Babelfish 支持确定性和非确定性排序规则:
确定性排序规则 将具有相同字节序列的字符评估为相等。这意味着
x
和X
在确定性排序规则中是不相等的。确定性的排序规则可以区分大小写 (CS) 且区分重音 (AS)。非确定性排序规则 不需要完全相同的匹配。非确定性排序规则评估
x
和X
相等。非确定性排序规则不区分大小写(CI)和/或不区分重音(AI)。
在下表中,您可以找到在使用非确定性排序规则时,Babelfish 和 PostgreSQL 之间的一些行为差异。
Babelfish | PostgreSQL |
---|---|
对于 CI_AS 排序规则支持 LIKE 子句。 |
对于非确定性排序规则不支持 LIKE 子句。 |
仅在 Babelfish 版本 4.2.0 的以下 AI 排序规则中才支持 LIKE 子句:
|
对于非确定性排序规则不支持 LIKE 子句。 |
有关 Babelfish 与 SQL Server 和 PostgreSQL 相比的其他限制和行为差异的列表,请参阅排序规则限制和行为区别。
Babelfish 和 SQL Server 遵循描述排序规则属性的排序规则命名约定,如下表所示。
属性 | 描述 |
---|---|
AI |
不区分重音。 |
AS |
区分重音。 |
BIN2 |
BIN2 请求按代码点顺序对数据进行排序。Unicode 代码点顺序与 UTF-8、UTF-16 和 UCS-2 编码的字符顺序相同。代码点顺序是一种快速的确定性排序规则。 |
CI |
不区分大小写。 |
CS |
区分大小写。 |
PREF |
要在小写字母之前对大写字母进行排序,请使用 PREF 排序规则。如果比较不区分大小写,在没有其他区别的情况下,字母的大写版本排序将在小写版本之前。ICU 库支持带有 PREF 只能应用于 |
Babelfish 支持的排序规则
将以下排序规则用作服务器排序规则或对象排序规则。
排序规则 ID | 注意 |
---|---|
bbf_unicode_general_ci_as |
支持不区分大小写的比较和 LIKE 运算符。 |
bbf_unicode_cp1_ci_as |
非确定性排序规则 |
bbf_unicode_CP1250_ci_as |
非确定性排序规则 |
bbf_unicode_CP1251_ci_as |
使用西里尔文字的语言的非确定性排序规则 |
bbf_unicode_cp1253_ci_as |
用于代表现代希腊语的非确定性排序规则 |
bbf_unicode_cp1254_ci_as |
支持土耳其语的非确定性排序规则 |
bbf_unicode_cp1255_ci_as |
支持希伯来语的非确定性排序规则 |
bbf_unicode_cp1256_ci_as |
用来编写使用阿拉伯文字的语言的非确定性排序规则 |
bbf_unicode_cp1257_ci_as |
用于支持爱沙尼亚语、拉脱维亚语和立陶宛语的非确定性排序规则 |
bbf_unicode_cp1258_ci_as |
用于编写越南语字符的非确定性排序规则 |
bbf_unicode_cp874_ci_as |
用于编写泰语字符的非确定性排序规则 |
sql_latin1_general_cp1250_ci_as |
用来表示拉丁字符的非确定性单字节字符编码 |
sql_latin1_general_cp1251_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1253_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1254_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1255_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1256_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1257_ci_as |
支持拉丁字符的非确定性排序规则 |
sql_latin1_general_cp1258_ci_as |
支持拉丁字符的非确定性排序规则 |
chinese_prc_ci_as |
支持中文 (PRC) 的非确定性排序规则。 |
cyrillic_general_ci_as |
支持西里尔文的非确定性排序规则。 |
finnish_swedish_ci_as |
支持芬兰语的非确定性排序规则。 |
french_ci_as |
支持法语的非确定性排序规则。 |
japanese_ci_as |
支持日语的非确定性排序规则。在 Babelfish 2.1.0 及更高版本中支持。 |
korean_wansung_ci_as |
支持韩语的非确定性排序规则(带字典排序)。 |
latin1_general_ci_as |
支持拉丁字符的非确定性排序规则。 |
modern_spanish_ci_as |
支持现代西班牙语的非确定性排序规则。 |
polish_ci_as |
支持波兰语的非确定性排序规则。 |
thai_ci_as |
支持泰语的非确定性排序规则。 |
traditional_spanish_ci_as |
支持西班牙语的非确定性排序规则(传统排序)。 |
turkish_ci_as |
支持土耳其语的非确定性排序规则。 |
ukrainian_ci_as |
支持乌克兰语的非确定性排序规则。 |
vietnamese_ci_as |
支持越南语的非确定性排序规则。 |
您可以将以下排序规则作为对象排序规则。
方言 | 确定性选项 | 非确定性选项 |
---|---|---|
阿拉伯语 |
Arabic_CS_AS |
Arabic_CI_AS Arabic_CI_AI |
阿拉伯语文字 |
BBF_Unicode_CP1256_CS_AS BBF_Unicode_Pref_CP1256_CS_AS |
BBF_Unicode_CP1256_CI_AI BBF_Unicode_CP1256_CS_AI |
二元 |
latin1_general_bin2 BBF_Unicode_BIN2 |
– |
使用拉丁字母的中欧和东欧语言 |
BBF_Unicode_CP1250_CS_AS BBF_Unicode_Pref_CP1250_CS_AS |
BBF_Unicode_CP1250_CI_AI BBF_Unicode_CP1250_CS_AI |
中文 |
Chinese_PRC_CS_AS |
Chinese_PRC_CI_AS Chinese_PRC_CI_AI |
Cyrillic_General |
Cyrillic_General_CS_AS |
Cyrillic_General_CI_AS Cyrillic_General_CI_AI |
西里尔文字 |
BBF_Unicode_CP1251_CS_AS BBF_Unicode_Pref_CP1251_CS_AS |
BBF_Unicode_CP1251_CI_AI BBF_Unicode_CP1251_CS_AI |
爱沙尼亚语 |
Estonian_CS_AS |
Estonian_CI_AS Estonian_CI_AI |
爱沙尼亚语、拉脱维亚语和立陶宛语 |
BBF_Unicode_CP1257_CS_AS BBF_Unicode_Pref_CP1257_CS_AS |
BBF_Unicode_CP1257_CI_AI BBF_Unicode_CP1257_CS_AI |
Finnish_Swedish |
Finnish_Swedish_CS_AS |
Finnish_Swedish_CI_AS Finnish_Swedish_CI_AI |
French |
French_CS_AS |
French_CI_AS French_CI_AI |
希腊语 |
Greek_CS_AS |
Greek_CI_AS Greek_CI_AI |
希伯来语 |
BBF_Unicode_CP1255_CS_AS BBF_Unicode_Pref_CP1255_CS_AS Hebrew_CS_AS |
BBF_Unicode_CP1255_CI_AI BBF_Unicode_CP1255_CS_AI Hebrew_CI_AS Hebrew_CI_AI |
日语(Babelfish 2.1.0 及更高版本) |
Japanese_CS_AS |
Japanese_CI_AI Japanese_CI_AS |
Korean_Wamsung |
Korean_Wamsung_CS_AS |
Korean_Wamsung_CI_AS Korean_Wamsung_CI_AI |
代码页 CP1252 的拉丁字符 |
latin1_general_cs_as BBF_Unicode_General_CS_AS BBF_Unicode_General_Pref_CS_AS BBF_Unicode_Pref_CP1_CS_AS BBF_Unicode_CP1_CS_AS |
latin1_general_ci_as latin1_general_ci_ai latin1_general_cs_ai BBF_Unicode_General_CI_AI BBF_Unicode_General_CS_AI BBF_Unicode_CP1_CI_AI BBF_Unicode_CP1_CS_AI |
现代希腊语 |
BBF_Unicode_CP1253_CS_AS BBF_Unicode_Pref_CP1253_CS_AS |
BBF_Unicode_CP1253_CI_AI BBF_Unicode_CP1253_CS_AI |
Modern_Spanish |
Modern_Spanish_CS_AS |
Modern_Spanish_CI_AS Modern_Spanish_CI_AI |
蒙古语 |
Mongolian_CS_AS |
Mongolian_CI_AS Mongolian_CI_AI |
波兰语 |
Polish_CS_AS |
Polish_CI_AS Polish_CI_AI |
泰语 |
BBF_Unicode_CP874_CS_AS BBF_Unicode_Pref_CP874_CS_AS Thai_CS_AS |
BBF_Unicode_CP874_CI_AI BBF_Unicode_CP874_CS_AI Thai_CI_AS、Thai_CI_AI |
Traditional_Spanish |
Traditional_Spanish_CS_AS |
Traditional_Spanish_CI_AS Traditional_Spanish_CI_AI |
土耳其语 |
BBF_Unicode_CP1254_CS_AS BBF_Unicode_Pref_CP1254_CS_AS Turkish_CS_AS |
BBF_Unicode_CP1254_CI_AI BBF_Unicode_CP1254_CS_AI Turkish_CI_AS、Turkish_CI_AI |
乌克兰语 |
Ukranian_CS_AS |
Ukranian_CI_AS Ukranian_CI_AI |
越南语 |
BBF_Unicode_CP1258_CS_AS BBF_Unicode_Pref_CP1258_CS_AS Vietnamese_CS_AS |
BBF_Unicode_CP1258_CI_AI BBF_Unicode_CP1258_CS_AI Vietnamese_CI_AS Vietnamese_CI_AI |
Babelfish 中的原定设置排序规则
以前,可排序的数据类型的原定设置排序规则是 pg_catalog.default
。数据类型和依赖于这些数据类型的对象遵循区分大小写的排序规则。这种情况可能会影响使用不区分大小写的排序规则的数据集的 T-SQL 对象。从 Babelfish 2.3.0 开始,可排序的数据类型(TEXT 和 NTEXT 除外)的原定设置排序规则与 babelfishpg_tsql.server_collation_name
参数中的排序规则相同。当您升级到 Babelfish 2.3.0 时,将在创建数据库集群时自动选择原定设置排序规则,这不会产生任何明显的影响。