Что эквивалентно функции IsNull () в SQL Server?

Ответы:

131

coalesceподдерживается как в Oracle, так и в SQL Server и выполняет те же функции, что nvlи и isnull. (Есть некоторые важные различия, coalesceможет принимать произвольное количество аргументов и возвращать первый ненулевой аргумент. Тип возвращаемого значения isnullсоответствует типу первого аргумента, что неверно coalesce, по крайней мере, на SQL Server.)

Шеннон Северанс
источник
9
+1: COALESCEэто ANSI, поддерживается Postgres, MySQL ... Единственное предостережение в том, что он не обязательно работает так же быстро, как собственный синтаксис.
OMG Ponies,
17
+1 для COALESCE, перед которым есть одно важное преимущество NVL: он выполняет сокращенную оценку, тогда как NVLвсегда оценивает оба параметра. Сравните COALESCE(1,my_expensive_function)с NVL(1,my_expensive_function).
Джеффри Кемп
Это COALESE()отличная функция, и вы можете прочитать о ней в MSDOC> COALESCE - тот же синтаксис работает в Oracle. Если данные имеют пустые строки вместо NULLS вам может понадобиться что - то вроде этого: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
SherlockSpreadsheets
108

Вместо ISNULL()использования NVL().

T-SQL:

SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable

PL / SQL:

SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
BoltClock
источник
2
Четко отвечает на вопрос.
Гэри Хакабоун,
31

Также используйте, NVL2как показано ниже, если вы хотите вернуть другое значение из field_to_check:

NVL2( field_to_check, value_if_NOT_null, value_if_null )

Использование: ORACLE / PLSQL: ФУНКЦИЯ NVL2

MinhD
источник
7

Вы можете использовать это условие if x is not null then.... Это не функция. Также есть NVL()функция, хороший пример использования здесь: функция NVL ref .

FrustratedWithFormsDesigner
источник