SQL Server likeで全角カタカナで全角ひらがなが取得される対応

SQL Server likeで全角カタカナで全角ひらがなが取得される対応

SQL Serverで、likeで全角カタカナで全角ひらがなが取得される対応手順を記述してます。

環境

  • OS windows10 pro
  • SQL server 2019
  • SSMS 18.7.1

全角カタカナでlike

以下の「Test」というテーブルから、

全角カタカナの「サトウ」でlikeを実行してみると、

SELECT [id]
    ,[name]
    ,[age]
FROM [sample].[dbo].[Test]
where [name] like '%サトウ%'

全角ひらがなの「さとうさん」も取得されます。

回避

これを回避するには、以下のようにCOLLATE句を使って「かな」を区別します。

SELECT TOP (100) [id]
    ,[name]
    ,[age]
FROM [sample].[dbo].[Test]
where [name] COLLATE Japanese_CI_AS_KS_WS like '%サトウ%'

実行結果

全角ひらがなは、取得されていないことが確認できます。

また、COLLATE句のオプションに指定できるものは、以下となります。

Japanese_BIN バイナリ並べ替え
Japanese_BIN2 バイナリコード ポイント並べ替え順
Japanese_CI_AI 大文字小文字を区別せず / アクセントを区別せず / かなを区別せず / 文字幅を区別せず
Japanese_CI_AI_KS 大文字小文字を区別せず / アクセントを区別せず / かなを区別する / 文字幅を区別せず
Japanese_CI_AI_KS_WS 大文字小文字を区別せず / アクセントを区別せず / かなを区別する / 文字幅を区別する
Japanese_CI_AI_WS 大文字小文字を区別せず / アクセントを区別せず / かなを区別せず / 文字幅を区別する
Japanese_CI_AS 大文字小文字を区別せず / アクセントを区別する / かなを区別せず / 文字幅を区別せず
Japanese_CI_AS_KS 大文字小文字を区別せず / アクセントを区別する / かなを区別する / 文字幅を区別せず
Japanese_CI_AS_KS_WS 大文字小文字を区別せず / アクセントを区別する / かなを区別する / 文字幅を区別する
Japanese_CI_AS_WS 大文字小文字を区別せず / アクセントを区別する / かなを区別せず / 文字幅を区別する
Japanese_CS_AI 大文字小文字を区別する / アクセントを区別せず / かなを区別せず / 文字幅を区別せず
Japanese_CS_AI_KS 大文字小文字を区別する / アクセントを区別せず / かなを区別する / 文字幅を区別せず
Japanese_CS_AI_KS_WS 大文字小文字を区別する / アクセントを区別せず / かなを区別する / 文字幅を区別する
Japanese_CS_AI_WS 大文字小文字を区別する / アクセントを区別せず / かなを区別せず / 文字幅を区別する
Japanese_CS_AS 大文字小文字を区別する / アクセントを区別する / かなを区別せず / 文字幅を区別せず
Japanese_CS_AS_KS 大文字小文字を区別する / アクセントを区別する / かなを区別する / 文字幅を区別せず
Japanese_CS_AS_KS_WS 大文字小文字を区別する / アクセントを区別する / かなを区別する / 文字幅を区別する