2014-03-12

【SQLServer】ワイルドカード文字(パーセント、アンダースコア)をLIKEで検索する

SQLでLIKE演算子を用いて検索するとき「%」や「_」は、ワイルドカード文字として使用します。

なので、「%」や「_」を含むデータ(「5%」とか「(^_^)」みたいな文字列)を抽出したいときは、エスケープしてやる必要があります。

具体的には、LIKE句の後ろにESCAPE句を記述して、エスケープ文字を指定し
エスケープしたい文字の直前に指定したエスケープ文字を 入れます。


SELECT
    *
FROM
    [table1]
WHERE
    [field1] LIKE '%5¥%%' ESCAPE '¥'


これで、[field1]に「5%」を含むレコードが抽出されます。
エスケープ文字は、「/」とか使わない文字ならなんでも良さそうです。

また、SQLServerなら、「[ ]」(角カッコ)で囲んでも検索出来ます。


SELECT
    *
FROM
    [table1]
WHERE
    [field1] LIKE '%5[%]%'


今までそういう検索をすることがなかったので、つい最近初めて知りました。

ちょっとググったら、ESCAPE句はOracleMasterの問題とかにもなってたので、
もしかして常識なのか?

0 件のコメント:

コメントを投稿