我正在尝试这样的查询:
Widget.find(:all, :conditions => ["name like %awesome%"])
但是,我从sanitize_sql收到“格式错误的格式字符串”异常,指定“%”作为问题。
如何执行此查询?
答案 0 :(得分:8)
试试这个语法:
term = "awesome"
Widget.all(:conditions => ["name LIKE ?", "%#{term}%"])
答案 1 :(得分:0)
尝试
Widget.find(:all, :conditions => ["name like '%awesome%'"])
只需在字符串%awesome%
编辑:好的,实际上并没有。 sql清理程序正在使用%s做一些事情。
这样可行。
Widget.find(:all, :conditions => ["name like ?","%awesome%"])
根据John Topley的回答,如果这是你真正需要的,你可以将字符串变成一个变量。
我发现在遇到SQL错误时发现有用的一个提示是检查development.log
- 它将列出实际针对数据库运行的所有查询。假设您具有SQL的基本知识,那么直接在控制台中调试它们通常很有用,而不是在ActiveRecord级别进行调试(尽管我认为在您的情况下代码在进入该阶段之前就已经开始了)
答案 2 :(得分:0)
您的解决方案不起作用,因为%awesome%附近没有引号。