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 |