燈明ブログ

現状は小池啓仁の応援ブログ

SQLSeverでのSELECT文のLIKE検索ワイルドカード

SQLのLIKE検索ワイルドカードには以下の4種類があります。

  • % - 0文字以外の任意の文字列にマッチ
  • _ - 1文字の任意文字にマッチ
  • [] - 指定された範囲または集合の任意の1文字にマッチ
  • [^] - 指定された範囲または集合に該当しない、任意の1文字を判別

サンプル(以下はNameが'TEST'であればヒットする)

SELECT * FROM UserTable WHERE Name LIKE 'TE%'
SELECT * FROM UserTable WHERE Name LIKE 'TE_T'
SELECT * FROM UserTable WHERE Name LIKE '[A-T][A-E][A-S][A-T]'
SELECT * FROM UserTable WHERE Name LIKE '[^A-S][^A-D][^A-R][^A-S]'

ちなみに、
ワイルドカード『%』や『_』をエスケープするには、以下の感じです。

where 列名 like 'AAA\%XXX%' escape '\'

上記は、文字列『AAA%XXX』の前方一致で検索される。

またちなみに、
前方一致とは、例えば、「Perl」というキーワードに前方一致する単語としては、「Perlメモ」「Perlノート」などが挙げられる。
後方一致とは、例えば、「Perl」というキーワードに後方一致する単語としては、「ActivePerl」「とほほのPerl」などが挙げられる。