我想创建一个用户定义的函数来实现IFNULL的功能,就像在mySQL中一样。
create function IFNULL (a varchar, b varchar)
returns varchar
stable
as $$
if a == NULL:
return b
$$ language plpythonu;
但是这要求b是一个表名并且提供字符串会引发错误。如何更改参数以便接收常量(字符串)?
答案 0 :(得分:2)
你的代码不太正确,试试这个
create or replace function f_null(a varchar, b varchar)
returns varchar
stable
as $$
if a == '' or a is None:
return b
else:
return a
$$ language plpythonu;
然后进行测试
select f_null(null,'sdf');
select f_null('','sdf');
select f_null('validstr','sdf');
或者,为什么不使用内置函数“coalesce”
如果您不想替换空白字符串,请使用:
select coalesce(null,'sdf');