Який еквівалент Oracle функції IsNull () SQL Server?


Відповіді:


131

coalesceпідтримується як в Oracle, так і в SQL Server і виконує по суті ту ж функцію, що nvlі в isnull. (Є кілька важливих відмінностей, coalesceможна взяти довільну кількість аргументів і повертає перший ненульовий. Тип повернення isnullвідповідає типу першого аргументу, що не відповідає дійсності coalesceпринаймні на SQL Server.)


9
+1: COALESCEANSI, підтримується 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
Відповідає на питання чітко.
Gary Huckabone

31

Також використовуйте NVL2як нижче, якщо ви хочете повернути інше значення з field_to_check:

NVL2( field_to_check, value_if_NOT_null, value_if_null )

Використання: ORACLE / PLSQL: NVL2 FUNCTION


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.