Ответы:
coalesceподдерживается как в Oracle, так и в SQL Server и выполняет те же функции, что nvlи и isnull. (Есть некоторые важные различия, coalesceможет принимать произвольное количество аргументов и возвращать первый ненулевой аргумент. Тип возвращаемого значения isnullсоответствует типу первого аргумента, что неверно coalesce, по крайней мере, на SQL Server.)
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".
Вместо ISNULL()использования NVL().
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
Также используйте, NVL2как показано ниже, если вы хотите вернуть другое значение из field_to_check:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Использование: ORACLE / PLSQL: ФУНКЦИЯ NVL2
Вы можете использовать это условие if x is not null then.... Это не функция. Также есть NVL()функция, хороший пример использования здесь: функция NVL ref .
COALESCEэто ANSI, поддерживается Postgres, MySQL ... Единственное предостережение в том, что он не обязательно работает так же быстро, как собственный синтаксис.