Есть ли функция, аналогичная COALESCE для пустой строки в AS400? - PullRequest
0 голосов
/ 30 мая 2018
SELECT COALESCE(value, 'M') 
  FROM MyTable

Если значение равно нулю, возвращаемое значение будет установлено на "M"

Существует ли функция, аналогичная COALESCE, в случае, если значение является пустой строкой?

IBMВерсия i: 7.1

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Нет.

Просто используйте выражение CASE, предполагая, что значение может быть NULL или пустым, сначала проверьте NULL.

case
  when value is NULL then 'M'
  when value = '' then 'M'
  else value
end as newValue
0 голосов
/ 30 мая 2018

Вы можете использовать NULLIF():

SELECT COALESCE(NULLIF(value, ''), 'M')
FROM [My Table]
0 голосов
/ 30 мая 2018

База данных DB2 поддерживает 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...