これはすごい LIKE 検索の書き方なのか?と幻惑された話[SQL]
(2020-11-12 19:17:55) by shinoda


日ごろからバリバリ SQL を書かれている方はこのエントリーを読まずあっちへ行ってください(笑)

マスタの検索画面で、空白で区切られた文字列で複数キーワード検索・・・という要件があって、(他人が作ったプログラムじゃけど)仕様変更の対応とかでソース触ってたら、その複数キーワード検索のプログラムが、

商品名 LIKE '%カレー%うどん%'

みたいな SQL を吐くのよ。

俺は日ごろそんなに SQL を触りまくってるわけではないので、

「おお!こう書くと、
商品名 LIKE '%カレー%' AND 商品名 LIKE '%うどん%'
と同じ動きをするのか!!」

なんて感動しちゃったのよね。

いや、違う(笑)

これだと「カレーうどん 2食入り」とか「大盛カツカレーうどん」はヒットするけど、「うどん屋さんのスープカレー」はヒットせんやん!
よく考えたら、% は単なる LIKE 検索時のワイルドカード文字やん!!(^^;

正規表現で /.*?カレー.*?うどん.*?/ って書いてるのと一緒やあ。

日ごろ、'ほげ%'(前方一致)、'%ほげ'(後方一致)、'%ほげ%'(部分一致)みたいにひとつの組み合わせだけで使うことが多いから、文言の中にいくつも % が含まれてたら、ついつい「お、なんかすごいことっやってる!?」って幻惑されるわ(^^;

そしてこれはもちろんバグだったので、

商品名 LIKE '%カレー%' AND 商品名 LIKE '%うどん%'

という SQL を吐くように直しましたとさ・・・という話(笑)

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8