LIKE 演算子の条件文字列内で文字をエスケープする方法を紹介します。
LIKE 演算子の条件では、ワイルドカード文字として %
_
が利用でき、
パターン一致のグループを表現する文字として、[
]
、否定表現として^
の文字が利用できます。
一方で %, _, [, ], ^ の文字を一致の条件として文字に利用したい場合があります。
これらの文字を利用する場合は、文字をエスケープ酢する必要があります。
次の書式を利用します。
LIKE '(条件の文字列)' {escape'(エスケープ文字)'}
エスケープ文字に\
を指定し、以下の書式を利用した場合 %
の文字は\%
、 [
の文字は \[
と表現できます。
LIKE '(条件の文字列)' {escape'¥'}
nameフィールドの値が Name:[1](任意の文字列)
のレコードを検索する例です。
SELECT * FROM MyTable WHERE name LIKE 'Name:\[1\]%' {escape'\'}
以下のテーブルを用意します。
id | category | name | price |
---|---|---|---|
1 | [Cookie] | ぺんぎんクッキー | 380 |
2 | [Chocolate] | らくだチョコレート | 240 |
3 | [Cookie] | かるがもサブレ | 160 |
4 | [Ice] | しろくまアイス | 280 |
5 | [Chocolate] | ふくろう生チョコ | 520 |
6 | [Ice] | ぺんぎんシャーベット | 140 |
次のSQL文を実行します。
categoryの値が [C(任意の文字列)]
の項目を検索します。
SELECT * FROM ProductsE WHERE category LIKE '\[C%\]%' {escape'\'}
上記のSQL文を実行すると以下の結果となります。
"[C...] "のカテゴリのレコードのみが検索できています。
id | category | name | price |
---|---|---|---|
1 | [Cookie] | ぺんぎんクッキー | 380 |
2 | [Chocolate] | らくだチョコレート | 240 |
3 | [Cookie] | かるがもサブレ | 160 |
5 | [Chocolate] | ふくろう生チョコ | 520 |