AS400中空字符串是否有类似COALESCE的函数

Is there a similar function to COALESCE for empty string in AS400

SELECT COALESCE(value, 'M') 
  FROM MyTable

如果值为 null,则返回值将设置为 "M"

如果值为空字符串,是否有类似COALESCE的函数?

IBM i 版本:7.1

DB2 数据库appears to support COALESCE。但无论如何,COALESCE 只能用于替换 NULL,而不是空字符串。这里的一种选择是只使用 CASE 表达式:

SELECT CASE WHEN value <> '' THEN value ELSE 'M' END AS value
FROM [My Table];

如果你想同时处理 NULL 和空字符串,那么使用这个:

SELECT CASE WHEN COALESCE(value, '') <> '' THEN value ELSE 'M' END AS value
FROM [My Table];

没有

只需使用 CASE 表达式,假设值可能为 NULL 或空,首先检查 NULL。

case
  when value is NULL then 'M'
  when value = '' then 'M'
  else value
end as newValue

您可以使用 NULLIF():

SELECT COALESCE(NULLIF(value, ''), 'M')
FROM [My Table]