

# Babelfish for Aurora PostgreSQL の照合順序について
<a name="babelfish-collations"></a>

Babelfish で Aurora PostgreSQL DB クラスターを作成するときは、データの照合を選択します。照合順序は、特定の人間言語で書かれたテキストまたは文字を生成するソート順とビットパターンを指定します。照合順序には、特定のビットパターンのセットに対してデータを比較するルールが含まれます。照合順序はローカリゼーションに関連しています。ロケールが異なると、文字マッピング、ソート順などに影響します。照合順序の属性は、さまざまな照合順序の名前に反映されます。属性の詳細については、「[Babelfish collation attributes table](#bfish-collation-attributes-table)」を参照してください。

Babelfish は、Babelfish が提供する同等の照合に SQL Server 照合をマッピングします。Babelfish は、文化的に敏感な文字列比較とソート順で、 Unicode 照合を事前に定義しています。また Babelfish は、SQL Server DB 内の照合を最も近い Babelfish 照合に変換する方法も提供します。ロケール固有の照合順序は、異なる言語および地域に対して提供されます。

一部の照合では、クライアント側のエンコーディングに対応したコードページを指定します。Babelfish は、各出力列の照合順序に応じて、サーバーエンコーディングからクライアントエンコーディングに自動的に変換します。

Babelfish は、「[Babelfish supported collations table](#bfish-collations-table)」に列挙された照合順序をサポートしています。Babelfish は、Babelfish が提供する同等の照合に SQL Server 照合をマッピングします。

Babelfish は International Components for Unicode (ICU) 照合順序ライブラリのバージョン 153.80 を使用しています。ICU 照合の詳細については、ICU ドキュメントの「[Collation](https://unicode-org.github.io/icu/userguide/collation/)」(照合順序) を参照してください。PostgreSQL と照合の詳細については、PostgreSQL ドキュメントの「[照合順序のサポート](https://www.postgresql.org/docs/current/collation.html)」を参照してください。

**Topics**
+ [照合順序とロケールを制御する DB クラスターパラメータ](#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)

## 照合順序とロケールを制御する DB クラスターパラメータ
<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 DB クラスターでこのパラメータの設定を変更しても、既存の照合順序のロケールには影響しません。照合の一覧については、「[Babelfish supported collations table](#bfish-collations-table)」を参照してください。

**babelfishpg\_tsql.server\_collation\_name**  
このパラメータは、サーバー (Aurora PostgreSQL DB クラスターインスタンス) とデータベースのデフォルトの照合順序を指定します。デフォルト値は `sql_latin1_general_cp1_ci_as` です。T-SQL では、サーバーの照合順序によって識別子の比較方法が決定されるため、`CI_AS` 照合順序は `server_collation_name` でなければならなりません。  
Babelfish DB クラスターを作成するときは、選択リストから [**照合順序名**] を選択します。これらには、「[Babelfish supported collations table](#bfish-collations-table)」に列挙された照合順序が含まれます。belfish データベースの作成後は、`server_collation_name` を変更しないでください。

Babelfish for Aurora PostgreSQL DB クラスターの作成時に選択した設定は、これらのパラメータのクラスターに関連付けられた DB クラスターパラメータグループに格納され、照合動作を設定します。

## 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 句はサポートしていません。 | 
| LIKE 句は、Babelfish バージョン 4.2.0 の次の AI 照合でのみサポートされます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/babelfish-collations.html) | 非決定的照合順序に関する LIKE 句はサポートしていません。 | 

SQL Server および PostgreSQL と比較した Babelfish の他の制限および動作の違いについては、「[照合順序の制限と動作の違い](collation.limitations.md)」を参照してください。

Babelfish と SQL Server は次の表に示すように、照合属性を記述する照合順序の命名規則に従います。<a name="bfish-collation-attributes-table"></a>


| 属性 | 説明 | 
| --- | --- | 
| AI | アクセントは区別されません。 | 
| AS | アクセントは区別されます。 | 
| BIN2 | BIN2 は、データをコードポイント順に並べ替えるよう要求します。Unicode コードポイントの順序は、UTF-8、UTF-16、UCS-2 のエンコーディングで同じ文字順序になります。コードポイントの順序は、高速確定的な照合順序です。 | 
| CI | 大文字と小文字を区別しない。 | 
| 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 | 中国語 (PRC) をサポートする非決定的照合順序。 | 
| cyrillic\_general\_ci\_as | キリル文字をサポートする非決定的照合順序。 | 
| finnish\_swedish\_ci\_as | フィンランド語をサポートする非決定的照合順序。 | 
| french\_ci\_as | フランス語をサポートする非決定的照合順序。 | 
| japanese\_ci\_as | 日本語をサポートする非決定的照合順序。Supported in Babelfish 2.1.0 and higher releases。 | 
| 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 | ウクライナ語をサポートする非決定的な照合順序。 | 
| vietamese\_ci\_as | ベトナム語をサポートする非決定的照合順序。 | 

次の照合順序をオブジェクト照合として使用できます。<a name="bfish-icu-collations-table"></a>


| 言語 | 決定的なオプション | 非決定的オプション | 
| --- | --- | --- | 
| アラビア語 | 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\_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\_CS\_AS | French\_CI\_AS<br />French\_CI\_AI | 
| ギリシャ語 | Greek\_CS\_AS | Greek\_CI\_AS<br />Greek\_CI\_AI | 
| ヘブライ語 | 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\_CS\_AS | Mongolian\_CI\_AS<br />Mongolian\_CI\_AI | 
| ポーランド語 | Polish\_CS\_AS | Polish\_CI\_AS<br />Polish\_CI\_AI | 
| タイ語 | 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 | 
| トルコ語 | 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\_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 にアップグレードすると、DB クラスターの作成時にデフォルトの照合が自動的に選択されるため、目に見える影響はありません。