

Я не знаком с DB2, но вы пробовали COALESCE?
то есть:
SELECT Product.ID, COALESCE(product.Name, "Internal") AS ProductName
FROM Product
Функция COALESCE такая же, как функция ISNULL
Примечание. вы должны использовать функцию COALESCE с тем же типом данных столбца, который вы проверяете как null.
Я думаю, что функция COALESCE частично аналогична isnull, но попробуйте.
Почему бы вам не использовать функции обработки нуля через прикладные программы, это лучшая альтернатива.
Как бы то ни было, COALESCE похож на него, но
IFNULL(expr1, default)
это точное совпадение, которое вы ищете в DB2.
COALESCE позволяет использовать несколько аргументов, возвращая первое выражение NON NULL, тогда как IFNULL разрешает только выражение и значение по умолчанию.
Таким образом
SELECT product.ID, IFNULL(product.Name, "Internal") AS ProductName
FROM Product
Дает вам то, что вы ищете, а также предыдущие ответы, просто добавляя для полноты.
+1 для предоставления совпадения точный для оператора IsNull. Я тоже проголосовал за принятый ответ, но вместо этого использую ваш. БЛАГОДАРНОСТЬ!
Select Product.ID, VALUE(product.Name, "Internal") AS ProductName from Product
Э, да. Однако обратите внимание, что VALUE(...)является синонимом COALESCE(...); оптимизатор, вероятно, меняет вызов за вас. Лично я рекомендую по возможности избегать семантики, отличной от ANSI (то есть вместо нее использовать COALESCE(...)).
В DB2 есть функция NVL (поле, значение, если ноль).
Пример:
ВЫБЕРИТЕ ID, NVL (NAME, "Internal) AS NAME, NVL (PRICE, 0) AS PRICE FROM PRODUCT WITH UR;
надеюсь, это может помочь кому-то еще
SELECT
.... FROM XXX XX
WHERE
....
AND(
param1 IS NULL
OR XX.param1 = param1
)
COALESCE отличается тем, что вы можете передать ему переменное количество параметров, и он вернет первое ненулевое значение с необязательным значением по умолчанию. Итак, если у меня есть varA, varB и VarC, любой из которых может быть нулевым (скажем, они происходят из разных таблиц во внешнем соединении), и если все они равны нулю, мне нужна пустая строка, я мог бы использовать COALESCE (varA, varB, varC, ' ') и получите первое из них, которое не было нулем, или пустую строку, если все они равны нулю. IFNULL (ISNULL в T-SQL) - это все или ничего.