2
A
回答
5
where(state: nil)
的计算结果为WHERE events.state IS NULL
,另一个计算结果为SQL中的WHERE (state = NULL)
。
现在,A NULL
相比,任何事情都会返回NULL
,除非您使用IS
运算符。所以,如果你想检查它是否为NULL
,则使用state IS NULL
,如果不是NULL
,则使用。
state = NULL
,返回NULL
,其中,在WHERE
条款,相当于FALSE
,这就是为什么你得到记录。
events.state IS NULL
是正确的空比较,所以你得到了你在DB中的输出。
1
它们生成不同的sql。当你有这样的问题时,你可以添加一个.to_sql到你的关系,它会显示你生成并发送到数据库的sql。
Event.where(状态:无)产生此,如果x是像值空
... WHERE events.state IS NULL
Event.where( '状态=?',零)产生此,检查是否X其中它检查等于null这将永远不会是真的
... WHERE (state = NULL)
相关问题
- 1. 这些陈述有什么区别吗?
- 2. 这些陈述之间有什么区别
- 3. 这些陈述之间有什么区别?
- 4. 这些陈述之间的区别是什么
- 5. 这两个陈述之间有什么区别?
- 6. 这两个陈述有什么区别?
- 7. 这两个陈述有什么区别?
- 8. 这两个陈述有什么区别?
- 9. 这两个陈述有什么区别吗?
- 10. 这两个比较陈述有什么区别?
- 11. 这两个委托陈述有什么区别?
- 12. 这两个陈述之间的区别是什么(实体框架)
- 13. c中的条件陈述和控制陈述之间是否有区别?
- 14. 这两个陈述之间的区别? - C++
- 15. 这些有什么区别?
- 16. 这些有什么区别?
- 17. 这两行之间有什么区别?
- 18. 这两个....之间有什么区别?
- 19. 这和之间有什么区别:and:this?
- 20. 描述和描述之间有什么区别?
- 21. 这些构建器模式之间有什么区别?
- 22. 这些“打开”格式之间有什么区别
- 23. 这些(bCondition == NULL)和(NULL == bCondition)之间有什么区别?
- 24. 这些片段之间有什么区别?
- 25. 这些Scripts.Render语句之间的编译器有什么区别?
- 26. 这些nasm堆栈推动之间有什么区别?
- 27. Cocoa-Touch。这些NSMutableData方法之间究竟有什么区别?
- 28. 这些术语之间有什么区别:“协会”和“关系”?
- 29. 这些评论之间有什么区别
- 30. 这些IBM.Data.DB2 dll之间有什么区别?
你可以提供每个人的sql输出吗? '.to_sql' – xlembouras
好吧,我现在看到。首先给出'state IS NULL',第二个'state = NULL'。 –
第一个等价查询将是'Event.where('state IS NULL')'。 'Event.where('state =?',nil)'与'Event.where(state:nil)'不一样' – Pavan