了解 Babelfish for Aurora Postgre 中的定序SQL - Amazon Aurora

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

了解 Babelfish for Aurora Postgre 中的定序SQL

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

Babelfish 會將SQL伺服器定序映射至 Babelfish 提供的類似定序。Babelfish 預先定義支援文化差異性字串比較和排序順序的 Unicode 定序。Babelfish 也提供將SQL伺服器資料庫中的定序轉譯為最接近相符 Babelfish 定序的方法。針對不同語言和區域,已提供地區設定專用的定序。

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

Babelfish 支援 Babelfish supported collations table 中所列的定序。Babelfish 會將SQL伺服器定序映射至 Babelfish 提供的類似定序。

Babelfish 使用國際元件 Unicode (ICU) 定序程式庫的 153.80 版。如需ICU定序的詳細資訊,請參閱 ICU 文件中的定序。若要進一步了解 PostgreSQL 和定序,請參閱 PostgreSQL 文件中的定序支援

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

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

babelfishpg_tsql.default_locale

此參數指定該定序使用的預設地區設定。此參數用於與 Babelfish collation attributes table 中所列的屬性結合,以自訂特定語言和區域的定序。此參數的預設值為 en-US

預設地區設定會套用至以 "BBF" 開頭的所有 Babelfish 定序名稱,以及對應至 Babelfish 定序的所有SQL伺服器定序。在現有 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

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

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

  • 傳統_西班牙文_ci_ai

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

如需 Babelfish 相較於SQL伺服器和 Postgre 的其他限制和行為差異清單SQL,請參閱定序限制與行為差異

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

屬性 描述

AI

不區分重音。

AS

區分重音。

BIN2

BIN2 會請求依程式碼點順序排序資料。-8、UTF-UTF16 和 UCS-2 編碼的 Unicode 程式碼點順序是相同的字元順序。字碼指標順序是快速的確定性定序。

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

  • 傳統_西班牙文_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_unicodeCP1251_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

Arabic_CS_AS

Arabic_CI_AS

阿拉伯文_CI_AI

阿拉伯文指令碼

BBF_Unicode_CP1256_CS_AS

BBF_Unicode_PrefCP1256_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

中文PRC_CI_AS

中文PRC_CI_AI

Cyrillic_General

Cyrillic_General_CS_AS

Cyrillic_General_CI_AS

Cyrillic_General_CI_AI

西里爾文指令碼

BBF_Unicode_CP1251_CS_AS

BBF_Unicode_PrefCP1251_CS_AS

BBF_Unicode_CP1251_CI_AI

BBF_Unicode_CP1251_CS_AI

Estonian

Estonian_CS_AS

愛沙尼亞文_CI_AS

愛沙尼亞文_CI_AI

愛沙尼亞文、拉脫維亞文和立陶宛文

BBF_Unicode_CP1257_CS_AS

BBF_Unicode_PrefCP1257_CS_AS

BBF_Unicode_CP1257_CI_AI

BBF_Unicode_CP1257_CS_AI

Finnish_Swedish

Finnish_Swedish_CS_AS

Finnish_Swedish_CI_AS

芬蘭文_瑞典文_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_PrefCP1255_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

日文_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_PrefCP1_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_PrefCP1253_CS_AS

BBF_Unicode_CP1253_CI_AI

BBF_Unicode_CP1253_CS_AI

Modern_Spanish

Modern_Spanish_CS_AS

Modern_Spanish_CI_AS

現代_西班牙文_CI_AI

Mongolian

Mongolian_CS_AS

蒙古文_CI_AS

Mongolian_CI_AI

Polish

Polish_CS_AS

Polish_CI_AS

Polish_CI_AI

Thai

BBF_Unicode_CP874_CS_AS

BBF_Unicode_PrefCP874_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_PrefCP1254_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

烏克蘭文_CI_AS

烏克蘭文_CI_AI

越南文

BBF_Unicode_CP1258_CS_AS

BBF_Unicode_PrefCP1258_CS_AS

Vietnamese_CS_AS

BBF_Unicode_CP1258_CI_AI

BBF_Unicode_CP1258_CS_AI

越南文_CI_AS

越南文_CI_AI

Babelfish 中的預設定序行為

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