Apa yang setara dengan Oracle dari fungsi IsNull () SQL Server?

Jawaban:

131

coalescedidukung di Oracle dan SQL Server dan pada dasarnya memiliki fungsi yang sama seperti nvldan isnull. (Ada beberapa perbedaan penting, coalescedapat mengambil jumlah argumen yang berubah-ubah, dan mengembalikan yang pertama bukan-null. Jenis pengembalian untuk isnullcocok dengan jenis argumen pertama, yang tidak benar coalesce, setidaknya di SQL Server.)

Shannon Severance
sumber
9
+1: COALESCEadalah ANSI, didukung oleh Postgres, MySQL ... Satu-satunya peringatan adalah bahwa itu tidak selalu bekerja secepat sintaks asli.
OMG Ponies
17
+1 untuk COALESCE, yang memiliki satu keuntungan penting NVL: melakukan evaluasi jalan pintas, sambil NVLselalu mengevaluasi kedua parameter. Bandingkan COALESCE(1,my_expensive_function)dengan NVL(1,my_expensive_function).
Jeffrey Kemp
Ini 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".
SherlockSpreadsheets
108

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
BoltClock
sumber
2
Menjawab pertanyaan secara eksplisit.
Gary Huckabone
31

Gunakan juga NVL2seperti 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

MinhD
sumber
7

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 .

FrustratedWithFormsDesigner
sumber