第一个参数为nil

时间:2015-11-18 07:29:01

标签: sql ruby-on-rails ruby ruby-on-rails-3 rails-activerecord

foo=nilbar=43有一条记录。为什么以下查询与该记录不匹配。是不是只检查foo,因为它与给定值匹配(即nil)?

myrecords.where("foo = ? OR bar = ?", nil, 42).first

2 个答案:

答案 0 :(得分:2)

嘿,你可以尝试这种方式,在mysql中不能比较null值,以获取NULL值的更多信息 Working with NULL Values

myrecords.where("foo is null OR bar = ?", 42).first
  

如果您不知道对象的值是null或   not null使用mysql的NULL-safe equal to operator

 myrecords.where("foo <=> ? OR bar = ?", nil, 42).first

答案 1 :(得分:-1)

这应该有效:

myrecords.where("foo = ? OR bar = ?", NULL, 42).first