詳細な情報については次の情報が参考になります。
濁点 (゛) / 半濁点 (゜) ですが、これらを厳密に判断するかは照合順序のバージョン (90 / 100 / 140) によって異なってくるようです。
実際には、90 までと 100 以降で異なってくるようです。
こんかいは、検証用に次のテーブルを作成しています。
DROP TABLE IF EXISTS T1 GO CREATE TABLE T1( C1 varchar(2) COLLATE Japanese_90_CI_AI, C2 varchar(2) COLLATE Japanese_XJIS_100_CI_AI ) INSERT INTO T1 VALUES ('は', 'は'), ('ひ', 'ひ'), ('ふ', 'ふ'), ('へ', 'へ'), ('ほ', 'ほ'), ('ぱ', 'ぱ'), ('ぴ', 'ぴ'), ('ぷ', 'ぷ'), ('ぺ', 'ぺ'), ('ぽ', 'ぽ')
このテーブルに対して、次のクエリを実行してみます。
SELECT * FROM T1 WHERE C1 = 'は' SELECT * FROM T1 WHERE C2 = 'は'
今まで、SQL Server を使用されていた方であれば、「は」「ぱ」の行が取得されると思いますが、実際には次のような結果になります。
今回、照合順序は「CI」(Case Insensitive) を指定しているのですが、照合順序のバージョンによって、濁点 / 半濁点をアクセント記号として判断するかが異なってきていることが確認できるかと。
そもそもの話として、濁点 / 半濁点をアクセント記号とするかあるかとは思いますが、照合順序のバージョンによって、CI (アクセント記号を区別しない) の照合順序は、日本語の濁点 / 半濁点の認識が異なってきます。
「a」「a」については、アクセント記号の判断が、100 以降でも実施できますが、日本語の濁点 / 半濁点についてはアクセント記号扱いではなく、別の文字として認識されてしまうようですね。
AI / AS の説明をする場合、濁点 / 半濁点で説明をする機会が多いかと思いますが、この辺の動作は照合順序のバージョンによって重みづけが異なってくるため、この辺は意識しておきたいですね。