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

84

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

Теги:
sql-server
tsql
plsql

4 ответа

109
Лучший ответ

coalesce поддерживается как в Oracle, так и в SQL Server и выполняет по существу ту же функцию, что и nvl и isnull. (Есть несколько важных отличий, 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) .
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
    Отвечает на вопрос явно.
19

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

NVL2( field_to_check, value_if_NOT_null, value_if_null )

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

6

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню