foo=nil
和bar=43
有一条记录。为什么以下查询与该记录不匹配。是不是只检查foo
,因为它与给定值匹配(即nil
)?
myrecords.where("foo = ? OR bar = ?", nil, 42).first
答案 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