Jaki jest odpowiednik Oracle funkcji IsNull () programu SQL Server?

Odpowiedzi:

131

coalescejest obsługiwany zarówno w Oracle, jak i SQL Server i zasadniczo pełni tę samą funkcję co nvli isnull. (Jest kilka ważnych różnic, coalescemoże przyjąć dowolną liczbę argumentów i zwraca pierwszy niezerowy. Typ zwracany dla jest isnullzgodny z typem pierwszego argumentu, co nie jest prawdą coalesce, przynajmniej na SQL Server).

Shannon Severance
źródło
9
+1: COALESCEto ANSI, obsługiwane przez Postgres, MySQL ... Jedynym zastrzeżeniem jest to, że niekoniecznie działa tak szybko, jak natywna składnia.
Kucyki OMG
17
+1 dla COALESCE, co ma jedną ważną zaletę NVL: przeprowadza ocenę skrótów, podczas gdy NVLzawsze ocenia oba parametry. Porównaj COALESCE(1,my_expensive_function)z NVL(1,my_expensive_function).
Jeffrey Kemp,
Ta COALESE()funkcja jest świetna i możesz o niej poczytać na MSDOC> COALESCE - ta sama składnia działa na Oracle. Jeśli dane ma puste ciągi zamiast wartości null może trzeba coś takiego: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
SherlockSpreadsheets
108

Zamiast ISNULL()używać NVL().

T-SQL:

SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable

PL / SQL:

SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
BoltClock
źródło
2
Odpowiada wprost na pytanie.
Gary Huckabone
31

Użyj również NVL2jak poniżej, jeśli chcesz zwrócić inną wartość z field_to_check:

NVL2( field_to_check, value_if_NOT_null, value_if_null )

Użycie: ORACLE / PLSQL: FUNKCJA NVL2

MinhD
źródło
7

Możesz użyć warunku if x is not null then.... To nie jest funkcja. Jest też NVL()funkcja, dobry przykład użycia tutaj: funkcja NVL ref .

FrustratedWithFormsDesigner
źródło