日本語照合順序での 濁音、半濁音 の取り扱いについて

 

皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。

今回は、日本語照合順序での 濁音、半濁音 の特殊な取り扱いについて紹介します。

 

[濁音、半濁音 の 特殊な取り扱い]

濁音、半濁音 の文字コードは以下のものになります。

 

濁音、半濁音 SJIS UTF-16
゛ (全角) 0x814A 0x309B
゜ (全角) 0x814B 0x309C
゙ (半角) 0xDE 0xFF9E
゚ (半角) 0xDF 0xFF9F

 

SQL Server で 日本語照合順序を使用している場合、半角文字の後に濁音、半濁音を追加すると、”半角文字” + “濁音、半濁音” が 1 文字として認識されます。

具体的に LIKE 検索を実行し、動作を見てみましょう。

 

SELECT CASE WHEN 'ハ゛A' LIKE ' _A' COLLATE Japanese_CI_AI THEN'TRUE'ELSE 'FALSE' END AS 'Check'// クエリ結果 //Check---------------------------------TRUE

上記のクエリは、文字列 “ハ゛A” (半角カナ + 全角濁音 + 半角英数字 の3文字) を、文字列 “ _A” (アンダースコア + 半角英数字) で LIKE 検索で指定した条件で検索ができた場合に “TRUE” を返すクエリになります。

LIKE 検索時に “_” (アンダースコア) を指定した場合、ワイルドカード文字として扱われ、今回の場合、”任意の 1 文字” + “A” の条件に合致した場合に “TRUE” が返されます。 LIKE (ƒTransact-SQL)

今回の例では、 文字列 “ハ゛A” は 3文字 ですが、”半角文字” + “濁音、半濁音” が 1 文字と認識されるため、文字列 “ハ゛A” が 2文字 として扱われたことにより、”TRUE” の結果が返されています。

 

[関連情報] 日本語照合順序での長音、繰り返し符号の取り扱いについて 日本語照合順序での漢数字 〇 (0x815A) の取り扱いについて

 

※ 本Blogの内容は、2014年12月 現在の内容となっております