小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracle 11gのLike検索における特殊文字%と_の違い


photo credit: guidosportaal via photopin cc

はじめに

Oracleでlike句を使ったあいまい検索をする際、気をつけなければいけない特殊文字に%と_があります。
この記事では、特殊文字の動作とエスケープの仕方をまとめてみました。

%と_の違い

%と_は、それぞれ意味が違います。

  • 半角%:任意の0文字以上
  • 全角%:任意の0文字以上
  • 半角_:任意の1文字
  • 全角_:任意の1文字
Oracle 11g XE(11.2.0.2.0)の環境で検証してみる

以下のデータを用意する

1.半角%によるlike検索

select name, furigana, birthday from table01 where furigana like 'やまだ%';


2.全角%によるlike検索

select name, furigana, birthday from table01 where furigana like 'やまだ%';


3.半角_によるlike検索

select name, furigana, birthday from table01 where furigana like 'やまだ たろ_';


4.全角_による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 '!';