Yanıtlar:
coalesce
hem Oracle ve SQL Server desteklenen ve esasen aynı işlevi görür edilir nvl
ve isnull
. (Bazı önemli farklılıklar vardır, coalesce
rastgele sayıda bağımsız değişken alabilir ve boş olmayan ilk argümanı döndürür. Dönüş türü , en azından SQL Server isnull
için doğru olmayan ilk argümanın türüyle eşleşir coalesce
.)
COALESCE
, bunun üzerinde önemli bir avantajı vardır NVL
: kısayol değerlendirmesini yaparken, NVL
her zaman her iki parametreyi de değerlendirir. Karşılaştırma COALESCE(1,my_expensive_function)
ile NVL(1,my_expensive_function)
.
COALESE()
işlev harika ve MSDOC> COALESCE'de okuyabilirsiniz - aynı sözdizimi Oracle'da da çalışır. Veri yerine Boşlara boş dizeleri varsa böyle bir şey gerekebilir: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
.
Bunun yerine ISNULL()
kullanın NVL()
.
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
NVL2
Aşağıdakilerden başka bir değer döndürmek istiyorsanız aşağıdaki gibi kullanın field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Kullanım: ORACLE / PLSQL: NVL2 FONKSİYONU
Koşulu kullanabilirsiniz if x is not null then...
. Bu bir işlev değil. Bir de NVL()
fonksiyon var, burada iyi bir kullanım örneği: NVL function ref .
COALESCE
ANSI'dir, Postgres, MySQL tarafından desteklenir ... Tek uyarı, yerel sözdizimi kadar hızlı çalışmamasıdır.