PostgreSQL中除coalesce外是否有内置简化函数实现空值安全加法?
PostgreSQL中除coalesce外是否有内置简化函数实现空值安全加法?
嘿,这个问题问得很接地气!遗憾的是,PostgreSQL目前并没有像least或者greatest那样专门的内置简化函数,能直接帮你完成空值安全的加法操作。
你现在用的coalesce(col1, 0) + coalesce(col2, 0)其实就是官方支持的最直接的内置写法了。不过如果觉得重复写coalesce有点繁琐,完全可以自己定义一个自定义函数来简化操作,用起来和内置函数一样方便。
比如针对两个数值列的空值安全加法,你可以创建这样的函数:
CREATE OR REPLACE FUNCTION add_safe(a NUMERIC, b NUMERIC) RETURNS NUMERIC AS $$ BEGIN RETURN COALESCE(a, 0) + COALESCE(b, 0); END; $$ LANGUAGE plpgsql IMMUTABLE;
之后用的时候就可以直接写:SELECT add_safe(col1, col2) FROM your_table;
如果需要支持多个列的空值安全相加,还可以改成可变参数版本:
CREATE OR REPLACE FUNCTION add_safe_multiple(VARIADIC args NUMERIC[]) RETURNS NUMERIC AS $$ BEGIN RETURN COALESCE(SUM(args), 0); END; $$ LANGUAGE plpgsql IMMUTABLE;
用法示例:SELECT add_safe_multiple(col1, col2, col3, col4) FROM your_table;
这些自定义函数标记为IMMUTABLE,意味着PostgreSQL的查询优化器可以对它们进行缓存和优化,性能上完全不用担心。
备注:内容来源于stack exchange,提问作者user433342
相关产品推荐
相关产品推荐

