Postgresql 带有null参数的Postgres SQL函数为简单case/when/else生成null

Postgresql 带有null参数的Postgres SQL函数为简单case/when/else生成null,postgresql,Postgresql,请解释我为什么得到: select reducer('a', null); -- null ??? 当: 这是因为您将函数定义为STRICT(这与在NULL输入时返回NULL相同)。由于其中一个参数为NULL,因此甚至不调用该函数,并返回NULL 如果你不想那样,快跑吧 ALTER FUNCTION reducer(varchar, varchar) CALLED ON NULL INPUT; 我从create aggregate手册中复制了定义,但没有注意到strict关键字((谢谢

请解释我为什么得到:

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


这是因为您将函数定义为
STRICT
(这与
在NULL输入时返回NULL相同)。由于其中一个参数为NULL,因此甚至不调用该函数,并返回NULL

如果你不想那样,快跑吧

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

我从
create aggregate
手册中复制了定义,但没有注意到
strict
关键字((谢谢!
ALTER FUNCTION reducer(varchar, varchar)
   CALLED ON NULL INPUT;