2009-05-11 Mon

[別の年の同じ日: 2003 2006 2007 2008 2010 2012 2013

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\\' \\'')">