了解 Babelfish for Aurora PostgreSQL 中的定序 - Amazon Aurora

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

了解 Babelfish for Aurora PostgreSQL 中的定序

當您使用 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 使用第 153.80 版 International Components for Unicode (ICU) 定序程式庫。如需 ICU 定序的詳細資訊,請參閱 ICU 文件中的定序。若要進一步了解 PostgreSQL 和定序,請參閱 PostgreSQL 文件中的定序支援

可控制定序和地區設定的資料庫叢集參數

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

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_asserver_collation_name 必須是 CI_AS 定序,因為在 T-SQL 中,伺服器定序決定如何比較識別符。

當您建立 Babelfish 資料庫叢集時,請從可選取清單中選擇 Collation name (定序名稱)。這些包括 Babelfish supported collations table 中所列的定序。建立 Babelfish 資料庫之後,請勿修改 server_collation_name

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

Babelfish 中的確定性和非確定性定序

Babelfish 支援確定性和非確定性定序:

  • 確定性定序會將位元組序列相同的字元評估為相等。這表示 xX 在確定性定序中不相等。確定性定序區分大小寫 (CS) 和區分重音 (AS)。

  • 非確定性定序不要求完全相符。非確定性定序將 xX 評估為相同。非確定性定序不區分大小寫 (CI) 也不區分重音 (AI),或兩者都是。

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

Babelfish PostgreSQL

支援 CI_AS 定序的 LIKE 子句。

在非確定性定序上不支援 LIKE 子句。

僅支援來自 Babelfish 4.2.0 版中下列 AI 定序的 LIKE 子句:

  • bbf_unicode_cp1250_ci_ai

  • bbf_unicode_cp1250_cs_ai

  • bbf_unicode_cp1257_ci_ai

  • bbf_unicode_cp1257_cs_ai

  • bbf_unicode_cp1_ci_ai

  • bbf_unicode_cp1_cs_ai

  • estonian_ci_ai

  • finnish_swedish_ci_ai

  • french_ci_ai

  • latin1_general_ci_ai

  • latin1_general_cs_ai

  • modern_spanish_ci_ai

  • polish_ci_ai

  • sql_latin1_general_cp1_ci_ai

  • sql_latin1_general_cp1_cs_ai

  • traditional_spanish_ci_ai

在非確定性定序上不支援 LIKE 子句。

如需 Babelfish 與 SQL Server 和 PostgreSQL 比較之下的其他限制和行為差異清單,請參閱 定序限制與行為差異

Babelfish 和 SQL Server 遵循定序命名慣例來描述定序屬性,如下表所示。

屬性 描述

AI

不區分重音。

AS

區分重音。

BIN2

BIN2 要求以字碼指標順序來儲存資料。Unicode 字碼指標順序與 UTF-8、UTF-16 和 UCS-2 編碼的字元順序相同。字碼指標順序是快速的確定性定序。

CIS

不區分大小寫。

CS

區分大小寫。

PREF

若要將小寫字母排在大寫字母前面,請使用 PREF 定序。如果比較時不區分大小寫,且沒有其他差別,則大寫字母排在小寫字母前置。ICU 程式庫支援 colCaseFirst=upper 的大寫偏好設定,但不適用於 CI_AS 定序。

PREF 只能套用至 CS_AS 確定性定序。

在 Babelfish 中資料庫層級支援的定序

在 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 中的伺服器和物件定序

使用下列定序作為伺服器定序或物件定序。

定序 ID 備註

bbf_unicode_general_ci_as

支援不區分大小寫比較和 LIKE 運算子。

bbf_unicode_cp1_ci_as

也稱為 CP1252 的非確定性定序

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

支援簡體中文的非確定性定序。

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

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

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

Greek_CS_AS

Greek_CI_AS

Greek_CI_AI

Hebrew

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

Mongolian_CS_AS

Mongolian_CI_AS

Mongolian_CI_AI

Polish

Polish_CS_AS

Polish_CI_AS

Polish_CI_AI

Thai

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

Turkish

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

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 時,系統會在建立資料庫叢集時自動挑選預設定序,這不會產生任何可見的影響。