【SQL Server】SQL Server の「全角・半角」「大文字・小文字」「平仮名・カタカナ」の扱い

SQL Server の全角・半角の扱い

カタカナの全角・半角

 * デフォルトだと区別しない
 * 「ギ」と「ギ」も同じ扱いで区別しない
 * 「ギ」と「キ」は異なるので、以下【サンプル】の「id = 01」は引っかからない

サンプル

SELECT * FROM TestTable
WHERE Name LIKE '%キ%'

 id | Name
----+------
 01   アカギ <= 引っかからない
 02   キムラ

平仮名・カタカナの全角・半角・大・小の扱い

 * デフォルトだと「平仮名(あ)」「カタカナ(ア)」は区別しない
  → 例えば、『みち子』と『ミチ子』は区別されない
  (区別したい場合は、後述「全角・半角・大文字・小文字の区別するには」を参照のこと)

 * デフォルトだと「大(ア)」「小(ァ)」は区別する

サンプル

SELECT * FROM TestTable
WHERE Name LIKE '%あ%'

 id | Name
----+------
 01   アカギ    (全角カタカナ・大文字)
 02   アカギ     (半角カタカナ・大文字)
 03   あかぎ    (全角平仮名・大文字)
 04   ウァー    (全角カタカナ・小文字) <= 引っかからない
 05   ウァー      (半角カタカナ・小文字) <= 引っかからない

アルファベットの全角・半角・大文字・小文字の扱い

 * デフォルトだと区別しない
 * 「A」「A」「a」「a」も同じ扱いで区別しない

全角・半角・大文字・小文字の区別するには

 * COLLATE を指定する必要がある

構文

SELECT * FROM 【テーブル名】
WHERE 【項目名】 LIKE 【条件】 COLLATE Japanese_CS_AS_KS_WS

※照合順序
 * CI:大文字、小文字を区別しない
 * CS:大文字、小文字を区別する
 * AI:アクセント、濁音、破裂音を区別しない
 * AS:アクセント、濁音、破裂音を区別する
 * KS:ひらがなとカタカナを区別する
 * WS:全角、半角を区別する

SQL Serverのデフォルト

Japanese_CI_AS

 * CI : アルファベットの大・小文字を区別しない
 * AS : アクセント、濁音、破裂音を区別する