Prev / Next

2009-05-11 / Sequel で LIKE

Sequel で LIKE を使いたい場合,

DB[:foo].filter(:bar.like("baz"))


とすればいいんだけど,この like は case sensitive なので,
大文字・小文字を区別したくない場合は,

DB[:foo].filter(:bar.ilike("baz"))


と,ilike を使う.

また,SQL injection 対策は Sequel がやってくれるので,
特に考えなくていいっぽい.

word = "' or 'a' = 'a' '"
d = DB[:timeline].filter(:status_text.like("#{word}"))


は以下のような SQL になる

#<Sequel::MySQL::Dataset: "SELECT * FROM `timeline` WHERE (`status_text` LIKE BINARY '\\' or \\'a\\' = \\'a\\' \\'')">


comments powered by Disqus