如何将字符串传递给AWS redshift用户定义的函数?

时间:2018-01-22 07:23:25

标签: mysql amazon-redshift

我想创建一个用户定义的函数来实现IFNULL的功能,就像在mySQL中一样。

    create function IFNULL (a varchar, b varchar)
      returns varchar
    stable
    as $$
      if a == NULL:
        return b
    $$ language plpythonu;

但是这要求b是一个表名并且提供字符串会引发错误。如何更改参数以便接收常量(字符串)?

1 个答案:

答案 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');