2010-08-19 4 views

ответ

107

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

+9

+1: 'COALESCE' является ANSI, поддерживается Postgres, MySQL ... Единственное предостережение в том, что он не обязательно выполняется так быстро, как собственный синтаксис. –

+17

+1 для «COALESCE», который имеет одно важное преимущество над «NVL»: он выполняет краткую оценку, тогда как «NVL» всегда оценивает оба параметра. Сравните 'COALESCE (1, my_expensive_function)' с 'NVL (1, my_expensive_function)'. –

6

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

88

Вместо 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

Ответы на вопрос явно. –

20

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

NVL2(field_to_check, value_if_NOT_null, value_if_null) 

Использование: ORACLE/PLSQL: NVL2 FUNCTION

Смежные вопросы