Windows 照合順序名 (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
SQL Server の COLLATE
句で Windows 照合順序名を指定します。 Windows 照合順序名は、照合順序指定子と比較形式で構成されます。
構文
<Windows_collation_name> ::=
<CollationDesignator>_<ComparisonStyle>
<ComparisonStyle> ::=
{ <CaseSensitivity>_<AccentSensitivity> [ _<KanatypeSensitive> ] [ _<WidthSensitive> ] [ _<VariationSelectorSensitive> ]
}
| { _UTF8 }
| { _BIN | _BIN2 }
引数
CollationDesignator
Windows 照合順序で使用される基本照合順序規則を指定します。 基本照合順序の規則には、次の内容が含まれます。
- 辞書順での並べ替えを指定した場合に適用される並べ替えおよび比較規則。 並べ替え規則は、アルファベットまたは言語に基づきます。
- varchar データを格納するために使用されるコード ページ。
いくつかの例を次に示します。
Latin1_General
またはFrench
: 両方ともコード ページ1252
を使用します。Turkish
: コード ページ1254
を使用します。
CaseSensitivity
CI
では大文字と小文字が区別されず、 CS
では大文字と小文字が区別されます。
AccentSensitivity
AI
はアクセントを区別せず、 AS
はアクセントを区別します。
KanatypeSensitive
このオプションを省略すると、かな型を区別せず、 KS
はかな型の区別を指定します。
WidthSensitivity
このオプションを省略すると、幅を区別せずに指定 WS
、幅が区別されます。
VariationSelectorSensitivity
適用対象: SQL Server 2017 (14.x) 以降のバージョン
このオプションを省略すると、バリエーション セレクターを区別せずに指定 VSS
、バリエーション セレクターの区別が指定されます。
UTF8
適用対象: SQL Server 2019 (15.x) 以降のバージョン
対象となるデータ型で UTF-8 のエンコードが使用されるように指定します。 詳細については、「照合順序および Unicode のサポート」を参照してください。
{ BIN |BIN2 }
BIN
は、使用する下位互換性のあるバイナリ並べ替え順序を指定します。BIN2
は、コード ポイント比較セマンティクスを使用するバイナリ並べ替え順序を指定します。
解説
照合順序のバージョンによっては、一部のコード ポイントに並べ替えの重み、または大文字/小文字のマッピングが定義されていない場合があります。 たとえば、同じ文字が与えられているが、同じ照合順序のバージョンが異なる場合は、 LOWER
関数の出力を比較します。
SELECT NCHAR(504) COLLATE Latin1_General_CI_AS AS [Uppercase],
NCHAR(505) COLLATE Latin1_General_CI_AS AS [Lowercase];
結果セットは次のとおりです。
列名 | 結果 |
---|---|
Uppercase |
Ǹ |
Lowercase |
ǹ |
最初のステートメントでは、以前の照合順序でこの文字の大文字と小文字の両方の形式が表示されます (照合順序は、Unicode データを操作する際の文字の可用性には影響しません)。
SELECT LOWER(NCHAR(504) COLLATE Latin1_General_CI_AS) AS [Version80Collation],
LOWER(NCHAR(504) COLLATE Latin1_General_100_CI_AS) AS [Version100Collation];
結果セットは次のとおりです。
列名 | 結果 |
---|---|
Version80Collation |
Ǹ |
Version100Collation |
ǹ |
2 番目のステートメントは、照合順序が Latin1_General_CI_AS
されるときに大文字が返されることを示しています。このコード ポイントには、その照合順序で小文字のマッピングが定義されていないためです。
一部の言語では、古い照合順序を回避すると重大な結果となる可能性があります。 たとえば、Telegu がこれに該当します。
場合によっては、Windows 照合順序と SQL Server 照合順序によって、同じクエリに対して異なるクエリ プランが生成される場合があります。
例
次の表では、Windows 照合順序名の例をいくつか示します。
照合順序 | 説明 |
---|---|
Latin1_General_100_CI_AS |
照合順序では、Latin1 General ディクショナリの並べ替え規則が使用され、コード ページ 1252 にマップされます。 これは照合順序 _100 バージョンであり、大文字と小文字が区別されません (CI ) とアクセントが区別されます (AS )。 |
Estonian_CS_AS |
照合順序では、エストニア語辞書の並べ替え規則が使用され、コード ページ 1257 にマップされます。 これは、照合順序 _80 バージョンであり (名前にバージョン番号が含まれており)、大文字と小文字が区別され (CS )、アクセントが区別されます (AS )。 |
Japanese_Bushu_Kakusu_140_BIN2 |
照合順序では、バイナリ コード ポイントの並べ替え規則が使用され、コード ページ 932 にマップされます。 これはバージョン _140 照合順序であり、日本語の Bushu Kakusu ディクショナリの並べ替え規則は無視されます。 |
Windows 照合順序
SQL Server インスタンスでサポートされている Windows 照合順序の一覧を表示するには、次のクエリを実行します。
SELECT *
FROM sys.fn_helpcollations()
WHERE [name] NOT LIKE N'SQL%';