You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中用IS NULL条件更新多列时WHERE子句的正确写法疑问

结论

写法2是符合SQL语法规范的正确写法,写法1会直接触发语法错误无法执行。

原因说明

  • SQL的WHERE子句用于筛选符合条件的行,多个判断条件之间必须使用逻辑运算符(AND/OR/NOT)连接,逗号在WHERE子句中没有逻辑判断的语义,数据库执行写法1时会直接抛出语法错误。
  • 你给出的写法2的逻辑是:仅当三个字段同时为NULL时,才将这三个字段统一更新为0,如果你确认业务需求就是匹配三个字段全为空的行再更新,直接使用写法2即可。

拓展场景写法

如果你的需求是只要单个字段为NULL就将该字段更新为0,保留其他字段已有的非NULL值,可以使用下面的优化写法,避免覆盖已有合法值,同时减少无效更新:

UPDATE sometable SET
    [isConditionOnePassed] = ISNULL([isConditionOnePassed], 0),
    [isSecondPassed] = ISNULL([isSecondPassed], 0),
    [isThirdPassed] = ISNULL([isThirdPassed], 0)
WHERE [isConditionOnePassed] IS NULL 
   OR [isSecondPassed] IS NULL 
   OR [isThirdPassed] IS NULL

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:24:07