在SQL查询(PostgreSQL)时候有时候会返回null值, 但我们程序里面又不着null值的话, 如何在SQL中定义一个默认值呢?让本应该为NULL的时候返回该默认值。
直接在建表的时候指定该字段不可为null且指定默认值当然可以。
但还有其他情况结果中有null但我们不需要null的时候, 比如sum函数, 在没有查询结果的时候sum的返回值就是null
其实在psql中可以使用下面5种方法来实现这个效果
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为最大值
何方的个人小站的文章排序就是用的
GREATEST
,把创建时间和上次修改时间做比较,最新的在最前面。
比如下面的语句结果为1:
SELECT LEAST(12, 1, 5, 2, 3, 67, NULL, 43)
下面的语句结果为67:
SELECT GREATEST(12, 1, 5, 2, 3, 67, NULL, 43)