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

MySQL新手求助:查询列不含'u'却返回0行的问题

问题排查与解决

嘿,这个问题其实是SQL里NULL值的比较逻辑在搞鬼!让我给你拆解一下:

你的SW_Ver_update_status列初始值全是NULL,而在SQL的规则里,NULL代表“未知值”,所以当你用SW_Ver_update_status <> 'u'的时候,所有NULL的行都会被排除——因为NULL和任何值比较的结果都是UNKNOWN,不会被WHERE条件判定为真,这就是你返回0行的原因。

下面给你两种可行的解决方案:

方案1:直接包含NULL的行

用OR条件明确把NULL的行加进来,这样既筛选掉值为'u'的行,也保留所有NULL的记录:

SELECT DISTINCT node_ipv4, model 
FROM Nokia_Network_Analyzer.NAC_DSLAMS 
WHERE vendor = 'Calix' 
  AND model IN ('C7','E7') 
  AND (SW_Ver_update_status <> 'u' OR SW_Ver_update_status IS NULL) 
LIMIT 100;

方案2:用COALESCE转换NULL值

如果觉得OR条件有点繁琐,可以用COALESCE函数把NULL转换成一个肯定不等于'u'的值(比如空字符串),这样就能统一判断:

SELECT DISTINCT node_ipv4, model 
FROM Nokia_Network_Analyzer.NAC_DSLAMS 
WHERE vendor = 'Calix' 
  AND model IN ('C7','E7') 
  AND COALESCE(SW_Ver_update_status, '') <> 'u' 
LIMIT 100;

COALESCE(SW_Ver_update_status, '')的意思是:如果SW_Ver_update_status是NULL,就用空字符串代替它,否则用原来的值。空字符串显然不等于'u',所以所有NULL的行都会被保留下来。

以后写SQL涉及NULL值的比较时,一定要记得用IS NULL或者IS NOT NULL,而不是直接用等于/不等于符号哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:12