Функция IsNull в DB2 SQL?

Есть ли эффективный эквивалент функции isnull для DB2?

Представьте, что некоторые из наших продуктов являются внутренними, поэтому у них нет названий:

Select product.id, isnull(product.name, "Internal) 
From product

Может вернуться:

1 Socks 
2 Shoes 
3 Internal 
4 Pants
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
18
0
125 045
7

Ответы 7

Я не знаком с DB2, но вы пробовали COALESCE?

то есть:


SELECT Product.ID, COALESCE(product.Name, "Internal") AS ProductName
FROM Product

Функция COALESCE такая же, как функция ISNULL Примечание. вы должны использовать функцию COALESCE с тем же типом данных столбца, который вы проверяете как null.

Я думаю, что функция COALESCE частично аналогична isnull, но попробуйте.

Почему бы вам не использовать функции обработки нуля через прикладные программы, это лучшая альтернатива.

COALESCE отличается тем, что вы можете передать ему переменное количество параметров, и он вернет первое ненулевое значение с необязательным значением по умолчанию. Итак, если у меня есть varA, varB и VarC, любой из которых может быть нулевым (скажем, они происходят из разных таблиц во внешнем соединении), и если все они равны нулю, мне нужна пустая строка, я мог бы использовать COALESCE (varA, varB, varC, ' ') и получите первое из них, которое не было нулем, или пустую строку, если все они равны нулю. IFNULL (ISNULL в T-SQL) - это все или ничего.

Joey Morgan 04.08.2016 23:06

Как бы то ни было, COALESCE похож на него, но

IFNULL(expr1, default)

это точное совпадение, которое вы ищете в DB2.

COALESCE позволяет использовать несколько аргументов, возвращая первое выражение NON NULL, тогда как IFNULL разрешает только выражение и значение по умолчанию.

Таким образом

SELECT product.ID, IFNULL(product.Name, "Internal") AS ProductName
FROM Product

Дает вам то, что вы ищете, а также предыдущие ответы, просто добавляя для полноты.

+1 для предоставления совпадения точный для оператора IsNull. Я тоже проголосовал за принятый ответ, но вместо этого использую ваш. БЛАГОДАРНОСТЬ!

David 03.10.2011 22:37

Select Product.ID, VALUE(product.Name, "Internal") AS ProductName from Product

Э, да. Однако обратите внимание, что VALUE(...)является синонимом COALESCE(...); оптимизатор, вероятно, меняет вызов за вас. Лично я рекомендую по возможности избегать семантики, отличной от ANSI (то есть вместо нее использовать COALESCE(...)).

Clockwork-Muse 27.05.2014 15:41

В 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
       )

Другие вопросы по теме