Redshift:合并无法按预期工作

Redshift : Coalesce Can't Work As Expected

我们在 Redshift 上将空值补充为全零值,例如“00”。 有时,我发现 coalesce 函数不能像我们预期的那样工作。 如果我们使用 case 和 len,它可以正常工作,如下所示;

-- not work
SELECT coalesce(code_a, '00') FROM test;  --> code_a returns nothing. 

-- works fine
SELECT case when len(code_a)=0 then '00' else code_a end as code_a FROM test;
  --> code_a returns 00 as expected.

到目前为止,我不知道为什么 coalesce 不能工作。任何意见,将不胜感激。 谢谢。

''NULL 之间存在差异——我应该注意这是 预期的

您可以通过以下两种方式之一解决此问题:

coalese(nullif(code_a, ''), '00')

或使用 case 表达式:

(case when code_a <> '' then code_a else '00' end)