PostgreSQL查询返回Null时,如何设置默认值?
在PostgreSQL中为查询返回Null的变量设置默认值
针对你遇到的场景,有几种简洁的方式给_retention变量设置默认值:
方法1:使用COALESCE函数包裹整个查询
这种方式仅在没有匹配到fulfilment_type = 'daily'的记录时,才会给变量赋值默认值(示例中用30作为默认值,可按需替换)。如果存在匹配记录但retention_days字段本身为Null,变量会保留Null值:
DECLARE _retention bigint := COALESCE( (SELECT retention_days FROM retention_period WHERE fulfilment_type = 'daily'), 30);
方法2:使用SELECT ... INTO ... DEFAULT语法
将变量声明和赋值分开,在BEGIN块中使用带DEFAULT子句的SELECT INTO语句,同样在无匹配记录时触发默认值:
DECLARE _retention bigint; BEGIN SELECT retention_days INTO _retention DEFAULT 30 FROM retention_period WHERE fulfilment_type = 'daily'; END;
方法3:COALESCE包裹字段(适用不同场景)
如果需要无论无匹配记录,还是匹配到的记录中retention_days为Null时都使用默认值,就把COALESCE直接套在字段上:
DECLARE _retention bigint := (SELECT COALESCE(retention_days, 30) FROM retention_period WHERE fulfilment_type = 'daily');
内容的提问来源于stack exchange,提问作者user973347
相关产品推荐
相关产品推荐

