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


110

В SQL Server мы можем ввести, IsNull()чтобы определить, является ли поле нулевым. Есть ли в PL / SQL эквивалентная функция?

Ответы:


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

2
Четко отвечает на вопрос.
Гэри Хакабоун,

31

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

NVL2( field_to_check, value_if_NOT_null, value_if_null )

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.