photo credit: guidosportaal via photopin cc
はじめに
Oracleでlike句を使ったあいまい検索をする際、気をつけなければいけない特殊文字に%と_があります。
この記事では、特殊文字の動作とエスケープの仕方をまとめてみました。
検索エンジンはなぜ見つけるのか ―知っておきたいウェブ情報検索の基礎知識
posted with amazlet at 13.05.05
森大二郎
日経BP社
売り上げランキング: 94,972
日経BP社
売り上げランキング: 94,972
%と_の違い
%と_は、それぞれ意味が違います。
- 半角%:任意の0文字以上
- 全角%:任意の0文字以上
- 半角_:任意の1文字
- 全角_:任意の1文字
Oracle 11g XE(11.2.0.2.0)の環境で検証してみる
select name, furigana, birthday from table01 where furigana like 'やまだ%';
select name, furigana, birthday from table01 where furigana like 'やまだ%';
select name, furigana, birthday from table01 where furigana like 'やまだ たろ_';
select name, furigana, birthday from table01 where furigana like 'やまだ たろ_';
特殊文字をエスケープする
たとえば「やまだ %ろう」だけを検索したい場合は、%をエスケープしてあげると普通の文字として認識してくれます。
以下の例では!をエスケープ文字として使用しています。
select name, furigana, birthday from table01 where furigana like 'やまだ !%ろう' ESCAPE '!';
select name, furigana, birthday from table01 where furigana like 'やまだ !_ろう' ESCAPE '!';