

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 了解 Babelfish for Aurora PostgreSQL 中的定序
<a name="babelfish-collations"></a>

當您使用 Babelfish 建立 Aurora PostgreSQL 資料庫叢集時，您可以為您的資料選擇定序。*定序*可指定排序順序，及以人類書寫語言產生文字或字元的位元模式。定序中包含規則，可用於比較一組所給定位元模式的資料。定序與當地語系化相關。不同的地區設定會影響字元對應、排序順序等。定序屬性會反映在各種定序的名稱中。如需有關這些屬性的詳細資訊，請參閱 [Babelfish collation attributes table](#bfish-collation-attributes-table)。

Babelfish 將 SQL Server 定序映射至 Babelfish 提供的類似定序。Babelfish 預先定義支援文化差異性字串比較和排序順序的 Unicode 定序。Babelfish 也能夠將 SQL Server 資料庫中的定序轉化為最相符的 Babelfish 定序。針對不同語言和區域，已提供地區設定專用的定序。

某些定序指定對應於用戶端編碼的字碼頁。Babelfish 根據每個輸出資料欄的定序，自動將伺服器編碼轉化為用戶端編碼。

Babelfish 支援 [Babelfish supported collations table](#bfish-collations-table) 中所列的定序。Babelfish 將 SQL Server 定序映射至 Babelfish 提供的類似定序。

Babelfish 使用第 153.80 版 International Components for Unicode (ICU) 定序程式庫。如需 ICU 定序的詳細資訊，請參閱 ICU 文件中的[定序](https://unicode-org.github.io/icu/userguide/collation/)。若要進一步了解 PostgreSQL 和定序，請參閱 PostgreSQL 文件中的[定序支援](https://www.postgresql.org/docs/current/collation.html)。

**Topics**
+ [可控制定序和地區設定的資料庫叢集參數](#babelfish-collations.parameters)
+ [Babelfish 中的確定性和非確定性定序](#babelfish-collations.deterministic-nondeterministic)
+ [在 Babelfish 中資料庫層級支援的定序](#babelfish-collations.database-level)
+ [Babelfish 中的伺服器和物件定序](#babelfish-collations.reference-tables-supported-collations)
+ [Babelfish 中的預設定序行為](#babelfish-collations-default)
+ [管理定序](collation.managing.md)
+ [定序限制與行為差異](collation.limitations.md)

## 可控制定序和地區設定的資料庫叢集參數
<a name="babelfish-collations.parameters"></a><a name="collation-related-parameters"></a>

以下參數會影響定序行為。

**babelfishpg\_tsql.default\_locale**  
此參數指定該定序使用的預設地區設定。此參數用於與 [Babelfish collation attributes table](#bfish-collation-attributes-table) 中所列的屬性結合，以自訂特定語言和區域的定序。此參數的預設值為 `en-US`。  
預設地區設定會套用至所有以字母 "BBF" 開頭的 Babelfish 定序，也會套用至對應至 Babelfish 定序的所有 SQL Server 定序。在現有 Babelfish 資料庫叢集上變更此參數的設定，並不會影響現有定序的地區設定。如需定序清單，請參閱 [Babelfish supported collations table](#bfish-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](#bfish-collations-table) 中所列的定序。建立 Babelfish 資料庫之後，請勿修改 `server_collation_name`。

您在建立 Babelfish for Aurora PostgreSQL 資料庫叢集時所選擇的設定，會儲存在與這些參數的叢集相關聯的資料庫叢集參數群組中，並設定其定序行為。

## Babelfish 中的確定性和非確定性定序
<a name="babelfish-collations.deterministic-nondeterministic"></a>

Babelfish 支援確定性和非確定性定序：
+ *確定性定序*會將位元組序列相同的字元評估為相等。這表示 `x` 和 `X` 在確定性定序中不相等。確定性定序區分大小寫 (CS) 和區分重音 (AS)。
+ *非確定性定序*不要求完全相符。非確定性定序將 `x` 和 `X` 評估為相同。非確定性定序不區分大小寫 (CI) 也不區分重音 (AI)，或兩者都是。

在下表中，您可以在使用非確定性定序找到 Babelfish 和 PostgreSQL 之間的一些行為差異。


| Babelfish | PostgreSQL | 
| --- | --- | 
| 支援 CI\_AS 定序的 LIKE 子句。 | 在非確定性定序上不支援 LIKE 子句。 | 
| 僅支援來自 Babelfish 4.2.0 版中下列 AI 定序的 LIKE 子句：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/babelfish-collations.html) | 在非確定性定序上不支援 LIKE 子句。 | 

如需 Babelfish 與 SQL Server 和 PostgreSQL 比較之下的其他限制和行為差異清單，請參閱 [定序限制與行為差異](collation.limitations.md)。

Babelfish 和 SQL Server 遵循定序命名慣例來描述定序屬性，如下表所示。<a name="bfish-collation-attributes-table"></a>


| 屬性 | Description | 
| --- | --- | 
| AI | 不區分重音。 | 
| AS | 區分重音。 | 
| BIN2 | BIN2 要求以字碼指標順序來儲存資料。Unicode 字碼指標順序與 UTF-8、UTF-16 和 UCS-2 編碼的字元順序相同。字碼指標順序是快速的確定性定序。 | 
| CIS | 不區分大小寫。 | 
| CS | 區分大小寫。 | 
| PREF | 若要將小寫字母排在大寫字母前面，請使用 PREF 定序。如果比較時不區分大小寫，且沒有其他差別，則大寫字母排在小寫字母前置。ICU 程式庫支援 `colCaseFirst=upper` 的大寫偏好設定，但不適用於 CI\_AS 定序。<br />PREF 只能套用至 `CS_AS` 確定性定序。 | 

## 在 Babelfish 中資料庫層級支援的定序
<a name="babelfish-collations.database-level"></a>

在 Babelfish 中資料庫層級支援下列定序：
+ bbf\_unicode\_bin2
+ bbf\_unicode\_cp1\_ci\_ai
+ bbf\_unicode\_cp1\_ci\_as
+ bbf\_unicode\_cp1250\_ci\_ai
+ bbf\_unicode\_cp1250\_ci\_as
+ bbf\_unicode\_cp1257\_ci\_ai
+ bbf\_unicode\_cp1257\_ci\_as
+ estonian\_ci\_ai
+ estonian\_ci\_as
+ finnish\_swedish\_ci\_ai
+ finnish\_swedish\_ci\_as
+ french\_ci\_ai
+ french\_ci\_as
+ latin1\_general\_bin2
+ latin1\_general\_ci\_ai
+ latin1\_general\_ci\_as
+ latin1\_general\_90\_bin2
+ latin1\_general\_100\_bin2
+ latin1\_general\_140\_bin2
+ modern\_spanish\_ci\_ai
+ modern\_spanish\_ci\_as
+ polish\_ci\_ai
+ polish\_ci\_as
+ sql\_latin1\_general\_cp1\_ci\_ai
+ sql\_latin1\_general\_cp1\_ci\_as
+ sql\_latin1\_general\_cp1250\_ci\_as
+ sql\_latin1\_general\_cp1251\_ci\_as
+ sql\_latin1\_general\_cp1257\_ci\_as
+ traditional\_spanish\_ci\_ai
+ traditional\_spanish\_ci\_as

**注意**  
若要在資料庫層級使用不同的定序，請確定其符合伺服器層級定序。如需詳細資訊，請參閱[Babelfish 中的伺服器和物件定序](#babelfish-collations.reference-tables-supported-collations)

## Babelfish 中的伺服器和物件定序
<a name="babelfish-collations.reference-tables-supported-collations"></a>

使用下列定序作為伺服器定序或物件定序。<a name="bfish-collations-table"></a>


| 定序 ID | 備註 | 
| --- | --- | 
| bbf\_unicode\_general\_ci\_as | 支援不區分大小寫比較和 LIKE 運算子。 | 
| bbf\_unicode\_cp1\_ci\_as | 也稱為 CP1252 的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt)。 | 
| bbf\_unicode\_CP1250\_ci\_as | 在採用拉丁字母的中歐和東歐語言中用於表示文字的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt)。 | 
| bbf\_unicode\_CP1251\_ci\_as | 採用斯拉夫字母的語言所用的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt)。 | 
| bbf\_unicode\_cp1253\_ci\_as | 用於表示現代希臘文的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt)。 | 
| bbf\_unicode\_cp1254\_ci\_as | 支援土耳其文的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt)。 | 
| bbf\_unicode\_cp1255\_ci\_as | 支援希伯來文的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt)。 | 
| bbf\_unicode\_cp1256\_ci\_as | 書寫採用阿拉伯字母的語言所用的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt)。 | 
| bbf\_unicode\_cp1257\_ci\_as | 用於支援愛沙尼亞、拉脫維亞和立陶宛語言的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt)。 | 
| bbf\_unicode\_cp1258\_ci\_as | 用於書寫越南文字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt)。 | 
| bbf\_unicode\_cp874\_ci\_as | 用於書寫泰文字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit874.txt)。 | 
| sql\_latin1\_general\_cp1250\_ci\_as | 用於表示拉丁字元的[非確定性單位元組字元編碼](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt)。 | 
| sql\_latin1\_general\_cp1251\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt)。 | 
| sql\_latin1\_general\_cp1\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt)。 | 
| sql\_latin1\_general\_cp1253\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt)。 | 
| sql\_latin1\_general\_cp1254\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt)。 | 
| sql\_latin1\_general\_cp1255\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt)。 | 
| sql\_latin1\_general\_cp1256\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt)。 | 
| sql\_latin1\_general\_cp1257\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt)。 | 
| sql\_latin1\_general\_cp1258\_ci\_as | 支援拉丁字元的[非確定性定序](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt)。 | 
| chinese\_prc\_ci\_as | 支援簡體中文的非確定性定序。 | 
| 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 | 支援越南文的非確定性定序。 | 

您可以使用下列定序作為物件定序。<a name="bfish-icu-collations-table"></a>


| 方言 | 確定性選項 | 非確定性選項 | 
| --- | --- | --- | 
| Arabic | Arabic\_CS\_AS | Arabic\_CI\_AS<br />Arabic\_CI\_AI | 
| 阿拉伯字母 | BBF\_Unicode\_CP1256\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1256\_CS\_AS | BBF\_Unicode\_CP1256\_CI\_AI<br />BBF\_Unicode\_CP1256\_CS\_AI | 
| 二進位 | latin1\_general\_bin2<br />BBF\_Unicode\_BIN2 | – | 
| 使用拉丁字母的中歐和東歐語言 | BBF\_Unicode\_CP1250\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1250\_CS\_AS | BBF\_Unicode\_CP1250\_CI\_AI<br />BBF\_Unicode\_CP1250\_CS\_AI | 
| 中文 | Chinese\_PRC\_CS\_AS | Chinese\_PRC\_CI\_AS<br />Chinese\_PRC\_CI\_AI | 
| Cyrillic\_General | Cyrillic\_General\_CS\_AS | Cyrillic\_General\_CI\_AS<br />Cyrillic\_General\_CI\_AI | 
| 斯拉夫字母 | BBF\_Unicode\_CP1251\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1251\_CS\_AS | BBF\_Unicode\_CP1251\_CI\_AI<br />BBF\_Unicode\_CP1251\_CS\_AI | 
| Estonian | Estonian\_CS\_AS | Estonian\_CI\_AS<br />Estonian\_CI\_AI | 
| 愛沙尼亞文、拉脫維亞文和立陶宛文 | BBF\_Unicode\_CP1257\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1257\_CS\_AS | BBF\_Unicode\_CP1257\_CI\_AI<br />BBF\_Unicode\_CP1257\_CS\_AI | 
| Finnish\_Swedish | Finnish\_Swedish\_CS\_AS | Finnish\_Swedish\_CI\_AS<br />Finnish\_Swedish\_CI\_AI | 
| French | French\_CS\_AS | French\_CI\_AS<br />French\_CI\_AI | 
| Greek | Greek\_CS\_AS | Greek\_CI\_AS<br />Greek\_CI\_AI | 
| Hebrew | BBF\_Unicode\_CP1255\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1255\_CS\_AS<br />Hebrew\_CS\_AS | BBF\_Unicode\_CP1255\_CI\_AI<br />BBF\_Unicode\_CP1255\_CS\_AI<br />Hebrew\_CI\_AS<br />Hebrew\_CI\_AI | 
| 日文 (Babelfish 2.1.0 及更新版本) | Japanese\_CS\_AS | Japanese\_CI\_AI<br />Japanese\_CI\_AS | 
| Korean\_Wamsung | Korean\_Wamsung\_CS\_AS | Korean\_Wamsung\_CI\_AS<br />Korean\_Wamsung\_CI\_AI | 
| 程式碼頁面 CP1252 的拉丁字元 | latin1\_general\_cs\_as<br />BBF\_Unicode\_General\_CS\_AS<br />BBF\_Unicode\_General\_Pref\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1\_CS\_AS<br />BBF\_Unicode\_CP1\_CS\_AS | latin1\_general\_ci\_as<br />latin1\_general\_ci\_ai<br />latin1\_general\_cs\_ai<br />BBF\_Unicode\_General\_CI\_AI<br />BBF\_Unicode\_General\_CS\_AI<br />BBF\_Unicode\_CP1\_CI\_AI<br />BBF\_Unicode\_CP1\_CS\_AI | 
| 現代希臘文 | BBF\_Unicode\_CP1253\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1253\_CS\_AS | BBF\_Unicode\_CP1253\_CI\_AI<br />BBF\_Unicode\_CP1253\_CS\_AI | 
| Modern\_Spanish | Modern\_Spanish\_CS\_AS | Modern\_Spanish\_CI\_AS<br />Modern\_Spanish\_CI\_AI | 
| Mongolian | Mongolian\_CS\_AS | Mongolian\_CI\_AS<br />Mongolian\_CI\_AI | 
| Polish | Polish\_CS\_AS | Polish\_CI\_AS<br />Polish\_CI\_AI | 
| Thai | BBF\_Unicode\_CP874\_CS\_AS<br />BBF\_Unicode\_Pref\_CP874\_CS\_AS<br />Thai\_CS\_AS | BBF\_Unicode\_CP874\_CI\_AI<br />BBF\_Unicode\_CP874\_CS\_AI<br />Thai\_CI\_AS、Thai\_CI\_AI | 
| Traditional\_Spanish | Traditional\_Spanish\_CS\_AS | Traditional\_Spanish\_CI\_AS<br />Traditional\_Spanish\_CI\_AI | 
| Turkish | BBF\_Unicode\_CP1254\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1254\_CS\_AS<br />Turkish\_CS\_AS | BBF\_Unicode\_CP1254\_CI\_AI<br />BBF\_Unicode\_CP1254\_CS\_AI<br />Turkish\_CI\_AS、Turkish\_CI\_AI | 
| Ukranian | Ukranian\_CS\_AS | Ukranian\_CI\_AS<br />Ukranian\_CI\_AI | 
| 越南文 | BBF\_Unicode\_CP1258\_CS\_AS<br />BBF\_Unicode\_Pref\_CP1258\_CS\_AS<br />Vietnamese\_CS\_AS | BBF\_Unicode\_CP1258\_CI\_AI<br />BBF\_Unicode\_CP1258\_CS\_AI<br />Vietnamese\_CI\_AS<br />Vietnamese\_CI\_AI | 

## Babelfish 中的預設定序行為
<a name="babelfish-collations-default"></a>

早期，可定序資料類型的預設定序是 `pg_catalog.default`。資料類型和依賴這些資料類型的物件遵循區分大小寫的定序。此情況可能會影響定序不區分大小寫之資料集的 T-SQL 物件。從 Babelfish 2.3.0 開始，可定序資料類型 (TEXT 和 NTEXT 除外) 的預設定序 與 `babelfishpg_tsql.server_collation_name` 參數中的定序相同。當您升級至 Babelfish 2.3.0 時，系統會在建立資料庫叢集時自動挑選預設定序，這不會產生任何可見的影響。