̃Gg[͂ĂȃubN}[Nɒlj

PostgreSQL :: %を含む文字列の検索



SQL の LIKE 検索では、0文字以上の任意の文字列を % (パーセント)で表現する。
ちなみに任意の1文字は _ (アンダースコア)。
そのため、% を含む文字列の LIKE 検索は工夫する必要がある。

# をエスケープ文字として、% を含む文字列を LIKE 検索する

例えば、%0D%0A を含む文字列があるかどうか検索したい場合

select * from tablename where body like '%#%0D#%0A%' escape '#'

のように、# をエスケープ文字として宣言して、本来 % と認識させたい箇所の前に # を入れる。
エスケープ文字は # に限らず指定可能。ただし、検索対象カラム中にエスケープ文字が存在しないことが条件となる。
※ちなみに、エスケープ文字を明示的に宣言しないときは \ (バックスラッシュ) がエスケープ文字になる。


なお、' (シングルクォート)を含む文字列は

select * from tablename where body = 'I''m happy';

のように ' (シングルクォート) を続けて記述する




database/postgresql/etc/escape.txt