Jawaban:
coalesce
didukung di Oracle dan SQL Server dan pada dasarnya memiliki fungsi yang sama seperti nvl
dan isnull
. (Ada beberapa perbedaan penting, coalesce
dapat mengambil jumlah argumen yang berubah-ubah, dan mengembalikan yang pertama bukan-null. Jenis pengembalian untuk isnull
cocok dengan jenis argumen pertama, yang tidak benar coalesce
, setidaknya di SQL Server.)
COALESCE
, yang memiliki satu keuntungan penting NVL
: melakukan evaluasi jalan pintas, sambil NVL
selalu mengevaluasi kedua parameter. Bandingkan COALESCE(1,my_expensive_function)
dengan NVL(1,my_expensive_function)
.
COALESE()
fungsi besar dan Anda dapat membacanya di MSDOC> COALESCE - sintaks yang sama ini bekerja pada Oracle. Jika data Anda memiliki string kosong bukan NULLS Anda mungkin perlu sesuatu seperti ini: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
.
Alih-alih ISNULL()
, gunakan NVL()
.
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
Gunakan juga NVL2
seperti di bawah ini jika Anda ingin mengembalikan nilai lain dari field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Penggunaan: ORACLE / PLSQL: NVL2 FUNCTION
Anda bisa menggunakan kondisi tersebut if x is not null then...
. Ini bukan fungsi. Ada juga NVL()
fungsinya, contoh penggunaan yang bagus di sini: Fungsi NVL ref .
COALESCE
adalah ANSI, didukung oleh Postgres, MySQL ... Satu-satunya peringatan adalah bahwa itu tidak selalu bekerja secepat sintaks asli.