gpt4 book ai didi

postgresql - 具有 null 参数的 Postgresql 函数为简单的 case/when/else 生成 null

转载 作者:行者123 更新时间:2023-11-29 11:54:44 24 4
gpt4 key购买 nike

请解释为什么我得到:

select reducer('a', null);
-- null ???

时间:

CREATE or replace FUNCTION reducer(varchar, varchar)
RETURNS varchar AS
$$
SELECT case
when $1 = 'DEL' or $2 = 'DEL' then 'DEL'
when $1 = 'READ' or $2 = 'READ' then 'READ'
else 'NEW'
end;
$$ LANGUAGE 'sql' STRICT;

select reducer('a', 'b');
-- 'NEW'

最佳答案

那是因为您将函数定义为 STRICT(与 RETURNS NULL ON NULL INPUT 相同)。由于其中一个参数为 NULL,因此甚至没有调用该函数,而是返回 NULL。

如果你不想那样,运行

ALTER FUNCTION reducer(varchar, varchar)
CALLED ON NULL INPUT;

关于postgresql - 具有 null 参数的 Postgresql 函数为简单的 case/when/else 生成 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56546364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com