数码知识屋
霓虹主题四 · 更硬核的阅读氛围

SQL查询为空的记录:常见写法与实用技巧

发布时间:2025-12-23 07:21:37 阅读:130 次

如何查出字段为空的数据

在日常开发中,经常会遇到需要找出某些字段没有值的情况。比如用户注册时漏填了手机号,或者商品信息里缺少价格。这时候就得用 SQL 去筛选“空”的记录。

注意,“空”在数据库里有两种情况:一种是 NULL,另一种是空字符串('')。它们不一样,处理方式也不同。

查询 NULL 值的记录

如果某个字段值为 NULL,不能用等号判断。比如下面这个写法查不出来:

SELECT * FROM users WHERE phone = NULL;

正确做法是使用 IS NULL

SELECT * FROM users WHERE phone IS NULL;

这条语句会返回所有手机号为 NULL 的用户。

查询空字符串的记录

有些表设计会用空字符串代替 NULL,这时就得用等号判断:

SELECT * FROM users WHERE phone = '';

这条语句找到的是手机号被填成“空”的记录,虽然看着像没填,但在数据库里它不是 NULL。

同时查 NULL 和空字符串

为了保险起见,有时需要把两种“空”都找出来。可以用 OR 连接:

SELECT * FROM users WHERE phone IS NULL OR phone = '';

这样不管是 NULL 还是空字符串,都会被筛选出来。

使用 COALESCE 简化判断

如果想让查询更简洁,可以用 COALESCE 函数把 NULL 转成空字符串再判断:

SELECT * FROM users WHERE COALESCE(phone, '') = '';

COALESCE 会返回第一个非 NULL 的值,所以当 phone 是 NULL 时,就变成空字符串,和 '' 相等。

实际场景举例

假设你在做后台管理功能,需要找出哪些订单还没有填写收货地址。表叫 orders,字段是 address。可以直接写:

SELECT order_id, user_id FROM orders WHERE address IS NULL OR address = '';

这样运营人员就能快速看到哪些订单信息不完整,及时跟进处理。

有时候前端传参不规范,也可能导致数据写入空值。定期跑这类查询,能帮助发现数据质量问题。