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

多列非空校验SQL查询仍返回含NULL行,求问题排查

问题原因与修正方案

你的核心错误是用错了COALESCE的逻辑:COALESCE的作用是返回传入参数里第一个非NULL的值,只要你指定的列中有任意一个不为NULL,整个表达式就会返回非NULL,完全没检查所有要求的列是否都满足非空条件。举个例子:如果gameTitle是NULL,但gameDevTeam有值,COALESCE会直接返回gameDevTeam,导致这条存在NULL值的行被错误返回,根本达不到你“指定列(除innerId/outerId二选一)都非空”的要求。

正确的SQL查询

要实现需求,必须把每个强制非空的列单独做IS NOT NULL判断,再加上innerId和outerId至少一个非空的逻辑:

SELECT *
FROM GameData gd
WHERE gd.dev_Status = 002
  AND gd.gameType IN (003, 004)
  -- 以下列必须全部非NULL
  AND gd.gameTitle IS NOT NULL
  AND gd.gameDevTeam IS NOT NULL
  AND gd.prodCode IS NOT NULL
  AND gd.teamCode IS NOT NULL
  -- innerId与outerId至少一个非NULL
  AND (gd.innerId IS NOT NULL OR gd.outerId IS NOT NULL)

补充说明:因为gameType IN (003, 004)会自动排除gameType为NULL的行(NULL值不满足IN条件),所以可以不用额外写gd.gameType IS NOT NULL,如果要更严谨也可以加上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:25:28