You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否在OR条件中使用NULL?示例SQL语句是否合法?

嘿,这两个问题都是SQL里很基础但容易踩坑的点,我来给你详细说明:

问题1:能否在SQL的OR逻辑条件中使用NULL?

当然可以,但必须用正确的语法——也就是用IS NULL(或IS NOT NULL)来判断NULL值,绝对不能用= NULL或者!= NULL

原因很简单:SQL中的NULL代表「未知的缺失值」,它不等于任何值,甚至不等于它自己。如果你写Status = NULL,这个条件的结果永远是UNKNOWN(既不是TRUE也不是FALSE),数据库会直接忽略这种条件,永远匹配不到任何行。

所以在OR逻辑里搭配NULL时,一定要用IS NULL来做判断,就像你第二个问题里的写法那样,这才是正确的姿势。

问题2:这条SQL语句的写法是否合法?

完全合法,而且逻辑是准确的!

这条语句会返回Table表中所有满足以下任一条件的行:

  • Status字段的值为'0'
  • Status字段的值为'3'
  • Status字段为NULL

另外给你个小优化建议:可以把判断'0'和'3'的部分用IN子句合并,写法更简洁,逻辑和原语句完全一致,执行效率也没差别:

SELECT * FROM Table WHERE Status IN ('0', '3') OR Status IS NULL

内容的提问来源于stack exchange,提问作者Fikfattt

火山引擎 最新活动