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

如何简化SQL代码以找出表中所有含NULL值的行

简化查找含任意NULL值行的SQL代码

针对你的需求——找出Customer_Details表中任意列存在NULL值的行,这里提供几种简化方案:

通用SQL方案(所有数据库适用)

不需要依赖数据库特定功能,只是调整逻辑结构,比一堆OR更整洁:

SELECT *
FROM Customer_Details
WHERE NOT (
    customer_id IS NOT NULL
    AND transaction_dt IS NOT NULL
    AND payment_type IS NOT NULL
    -- 依次补充完剩余16列的`IS NOT NULL`判断
    AND quantity IS NOT NULL
)

原理是:排除所有列都不为NULL的行,剩下的就是至少有一个NULL值的行,逻辑和你原来的代码完全等价,但结构更清晰。

特定数据库专属简化方案

如果你的数据库支持特定函数/扩展,可以彻底避免手动列所有19列:

MySQL/MariaDB

利用JSON函数将行转成JSON格式,匹配其中的NULL值:

SELECT *
FROM Customer_Details
WHERE JSON_OBJECT(*) REGEXP ':null(,|}$)'

JSON_OBJECT(*)会把整行数据转为JSON字符串,其中NULL值会显示为:null,正则用来匹配这个模式。

PostgreSQL

借助hstore扩展(需先启用),将行转为键值对后检查NULL:

-- 先启用hstore扩展(只需执行一次)
CREATE EXTENSION IF NOT EXISTS hstore;

SELECT *
FROM Customer_Details
WHERE EXISTS (
    SELECT 1
    FROM each(hstore(Customer_Details))
    WHERE value IS NULL
)

SQL Server

通过FOR JSON生成JSON后检查NULL:

SELECT *
FROM Customer_Details cd
WHERE (SELECT cd.* FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER) LIKE '%:null%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:54:20