如何在SQL查询存在NULL值时返回默认值

2020-07-13 02:17:40  |  882 0  |  postgresql sql 数据库


在SQL查询(PostgreSQL)时候有时候会返回null值, 但我们程序里面又不着null值的话, 如何在SQL中定义一个默认值呢, 让本应该为NULL的时候返回该默认值. 直接在建表的时候指定该字段不可为null且指定默认值当然可以.

但还有其他情况结果中有null但我们不需要null的时候, 比如sum函数, 在没有查询结果的时候sum的返回值就是null

其实在psql中可以使用条件表达式(CASE,COALESCE,NULLIF,GREATEST,LEAST)来实现这个效果

CASE

CASE在psql官方文档中这样描述的

CASE WHEN 条件 THEN 结果
 [WHEN ...]
 [ELSE 结果]
END

比如要实现值为NULL时返回默认值

SELECT CASE WHEN 字段名 IS NULL THEN 默认值 ELSE 字段名 END
FROM 表名

COALESCE

COALESCE是一个函数, 返回输入参数的第一个不为NULL的值

格式为:

COALESCE(值 [, ...])

要实现值为NULL时返回默认值

SELECT COALESCE(字段名,默认值) FROM 表名

NULLIF

NULLIF是一个函数, 接收两个参数,并不是为NULL时返回默认值, 而是两个参数相等时返回NULL

格式为:

NULLIF(值1, 值2)

比如若某个值为字符串’null’返回null值

SELECT NULLIF(字段名,'null') FROM 表名

GREATEST 和 LEAST

GREATEST 和 LEAST也都是函数, 可以接收多个参数

GREATEST 是返回值中的最大值, 如果值中存在null则认为null为最小值

LEAST 是返回值中的最小值,如果值中存在null则认为null为最大值

比如下面的语句结果为1:

SELECT LEAST(12, 1, 5, 2, 3, 67, NULL, 43)

下面的语句结果为67:

SELECT GREATEST(12, 1, 5, 2, 3, 67, NULL, 43)


版权声明:自由转载-非商用-非衍生-保持署名

发表时间:2020-07-13 02:17:40

相关标签: postgresql sql 数据库

新建评论功能开发中