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

使用WHERE continent IS NOT NULL过滤仍出现NULL值的问题求助

解决SQL查询中continent列仍存在NULL值的问题
  • 情况1:数据中不是真正的NULL,而是空字符串/空格
    有些数据源会用空字符串('')或空格代替NULL,这时候IS NOT NULL无法过滤这类值。可以通过TRIM()去掉前后空格后排除空内容:

    SELECT 
        *
    FROM
        covidDeaths
    WHERE continent IS NOT NULL 
      AND TRIM(continent) <> ''
    ORDER BY
        date asc;
    
  • 情况2:数据中存在文本形式的'NULL'
    部分数据集会把缺失值存成字符串'NULL',这种值不属于SQL的NULL类型,IS NOT NULL不会对其生效,需要额外排除:

    SELECT 
        *
    FROM
        covidDeaths
    WHERE continent IS NOT NULL 
      AND TRIM(continent) <> ''
      AND TRIM(continent) <> 'NULL'
    ORDER BY
        date asc;
    
  • 情况3:数据中包含不可见字符
    若存在换行符、制表符这类不可见字符,TRIM()可能无法完全处理,可通过长度判断过滤无效值:

    SELECT 
        *
    FROM
        covidDeaths
    WHERE continent IS NOT NULL 
      AND LENGTH(TRIM(continent)) > 0
    ORDER BY
        date asc;
    
  • 额外补充:直接过滤非国家的location
    既然目标是只看国家数据,可直接排除location为大洲/全球的行(比如'World'、'Asia'这类),双重保障结果准确性:

    SELECT 
        *
    FROM
        covidDeaths
    WHERE continent IS NOT NULL 
      AND TRIM(continent) <> ''
      AND location NOT IN ('World', 'Asia', 'Europe', 'Africa', 'North America', 'South America', 'Oceania')
    ORDER BY
        date asc;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:02:42