我在rails控制台中尝试了以下语句:
SomeModel.where(["active = ? and price = ? and status_date <= ?", true , nil , Date.parse('20161101')]).size
这给了我>> 0
然后我将上述声明修改为:
SomeModel.where([ "active = ? and status_date <= ?", true , Date.parse('20161101') ]).where(price: nil).size
这给了我>> 533
有人可以解释为什么会这样吗?为什么这两个语句没有给出相同的输出?
规格:Rails 5.0.0,Postgres
答案 0 :(得分:3)
要与NULL
进行比较,查询必须为price IS NULL
而不是price = NULL
使用where(price: nil)
将为您生成正确的SQL,而参数值为price = ?
的{{1}}将无法与任何记录匹配。