Odpowiedzi:
coalesce
jest obsługiwany zarówno w Oracle, jak i SQL Server i zasadniczo pełni tę samą funkcję co nvl
i isnull
. (Jest kilka ważnych różnic, coalesce
może przyjąć dowolną liczbę argumentów i zwraca pierwszy niezerowy. Typ zwracany dla jest isnull
zgodny z typem pierwszego argumentu, co nie jest prawdą coalesce
, przynajmniej na SQL Server).
COALESCE
, co ma jedną ważną zaletę NVL
: przeprowadza ocenę skrótów, podczas gdy NVL
zawsze ocenia oba parametry. Porównaj COALESCE(1,my_expensive_function)
z NVL(1,my_expensive_function)
.
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"
.
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
Użyj również NVL2
jak 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
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 .
COALESCE
to ANSI, obsługiwane przez Postgres, MySQL ... Jedynym zastrzeżeniem jest to, że niekoniecznie działa tak szybko, jak natywna składnia.