筛选字段为0值与NULL值的SQL查询语句解析
零值与NULL值混查SQL语句说明
需求是查出表中指定字段值为0、以及值为NULL的所有记录,对应的SQL语句如下:
SELECT ename,comm FROM emp WHERE ISNULL(comm,0)= 0;
- 基础逻辑:这条语句查询的是员工表
emp的数据,最终只返回员工姓名ename、佣金comm两个字段。 - 筛选规则说明:
ISNULL()是SQL中很常用的空值替换函数,传入两个参数时的运行逻辑是:如果第一个参数(这里是佣金字段comm)的值为NULL,就返回第二个参数设置的默认值(这里设置的是0);如果第一个参数不是NULL,就直接返回第一个参数本身的存储值。
后面拼接= 0的判断,刚好可以一次性把两类符合需求的记录筛出来:- 佣金
comm字段本身存储的数值就是0的记录,函数直接返回0,匹配判断条件 - 佣金
comm字段值为NULL的记录,函数会先把NULL替换成0,同样匹配判断条件
- 佣金
注意:
ISNULL函数不是所有数据库都通用,比如Oracle中实现相同逻辑需要换成NVL(comm,0)=0,PostgreSQL中可以用标准SQL的COALESCE(comm,0)=0,跨数据库使用时记得适配语法,否则会报函数不存在的错误。
内容的提问来源于stack exchange,提问作者CoCo
相关产品推荐
相关产品推荐

