Відповіді:
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 FUNCTION
Ви можете скористатися умовою if x is not null then...
. Це не функція. Тут також NVL()
є хороший приклад використання: NVL функція ref .
COALESCE
ANSI, підтримується Postgres, MySQL ... Єдиний застереження полягає в тому, що він не обов'язково виконує так швидко, як рідний синтаксис.