有没有办法用一个相等运算符测试0和NULL?
我意识到我能做到这一点:
WHERE field = 0 OR field IS NULL
但如果这样可行,我的生活将会轻松一百倍:
WHERE field IN (0, NULL)
(顺便说一句,为什么不起作用?)
我还读过在SELECT语句中将NULL转换为0(使用COALESCE).我正在使用的框架也会令人不愉快.
意识到这是奇怪的具体,但有没有办法用一个WHERE谓词测试0和NULL?
Teh*_*ike 12
我会用方便的IFNULL功能写出这个比较:
IFNULL(field, 0) = 0
Run Code Online (Sandbox Code Playgroud)
并回答您关于IN功能的问题:
"为了符合SQL标准,IN不仅在左侧的表达式为NULL时返回NULL,而且如果在列表中找不到匹配,并且列表中的一个表达式为NULL,则返回NULL." - 文档
它不工作,因为field In(0,Null)是相当于field = 0 Or field = Null而不是field = 0 Or field Is Null.一种选择是使用Case表达式:
Case
When field = 0 Then 1
When field Is Null Then 1
End = 1
Run Code Online (Sandbox Code Playgroud)
更好的选择是坚持使用原件,field = 0 OR field Is Null因为它可以使您的意图更清晰.
| 归档时间: |
|
| 查看次数: |
4290 次 |
| 最近记录: |