ブログトップ 記事一覧 ログイン 無料ブログ開設

大人になったら肺呼吸 RSSフィード Twitter

2013-05-06

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

f:id:replication:20130506004924j:image

photo credit: guidosportaal via photopin cc

はじめに

Oracleでlike句を使ったあいまい検索をする際、気をつけなければいけない特殊文字に%と_があります。

この記事では、特殊文字の動作とエスケープの仕方をまとめてみました。

%と_の違い

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

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

以下のデータを用意する

f:id:replication:20130506002502p:image

1.半角%によるlike検索

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

f:id:replication:20130506003028p:image

2.全角%によるlike検索

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

f:id:replication:20130506003313p:image

3.半角_によるlike検索

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

f:id:replication:20130506003528p:image

4.全角_によるlike検索

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

f:id:replication:20130506003851p:image

特殊文字をエスケープする

たとえば「やまだ %ろう」だけを検索したい場合は、%をエスケープしてあげると普通の文字として認識してくれます。

以下の例では!をエスケープ文字として使用しています。

select name, furigana, birthday from table01 where furigana like 'やまだ !%ろう' ESCAPE '!';

f:id:replication:20130506004317p:image

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

f:id:replication:20130506004533p:image


関連エントリ

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close