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」などが挙げられる。