Handel NUL
Nilai NULL berarti tidak ada nilai atau tidak diketahui. Nilai ini tidak berarti nol atau kosong, atau bahkan string kosong. Nilai-nilai tersebut tidak diketahui. Nilai NULL dapat digunakan untuk nilai yang belum diberikan, contohnya, ketika pelanggan belum memberikan alamat email. Seperti yang telah Anda lihat sebelumnya, nilai NULL juga dapat dikembalikan oleh beberapa fungsi konversi jika nilai tidak kompatibel dengan tipe data target.
Anda akan sering mengambil langkah khusus untuk menghadapi nilai NULL. NULL benar-benar non-nilai. Hal ini tidak diketahui. Hal ini tidak sama dengan apa pun, dan tidak setara dengan apa pun. NULL tidak lebih besar atau kurang dari apa pun. Kita tidak bisa mengatakan apa-apa tentang NULL, tetapi kadang-kadang kita perlu bekerja dengan nilai-nilai NULL. Untungnya, T-SQL menyediakan fungsi untuk konversi atau penggantian nilai NULL.
nilaiKosong
Fungsi ISNULL membutuhkan dua argumen. Yang pertama adalah ekspresi yang sedang kita uji. Jika nilai argumen pertama adalah NULL, fungsi mengembalikan argumen kedua. Jika ekspresi pertama tidak null, ekspresi dikembalikan tanpa perubahan.
Misalnya, tabel Sales.Customer dalam database menyertakan kolom MiddleName yang memungkinkan nilai NULL. Saat melakukan kueri pada tabel ini, daripada mengembalikan NULL dalam hasilnya, Anda dapat memilih untuk mengembalikan nilai tertentu, seperti "Tidak Bernilai".
SELECT FirstName,
ISNULL(MiddleName, 'None') AS MiddleIfAny,
LastName
FROM Sales.Customer;
Hasil dari kueri ini mungkin terlihat seperti ini:
Nama Depan
MiddleIfAny
NamaBelakang
Orlando
N.
Gee
Keith
Tidak
Howard
Donna
F.
Gonzales
...
...
...
Catatan
Nilai yang diganti dengan NULL harus memiliki tipe data yang sama dengan ekspresi yang sedang dievaluasi. Dalam contoh di atas, MiddleName adalah varchar, sehingga nilai penggantian tidak dapat berupa numerik. Selain itu, Anda harus memilih nilai yang tidak akan muncul dalam data sebagai nilai reguler. Terkadang sulit untuk menemukan nilai yang tidak akan pernah muncul di data Anda.
Contoh sebelumnya menangani nilai NULL dalam tabel sumber, tetapi Anda dapat menggunakan ISNULL dengan ekspresi apa pun yang mungkin mengembalikan NULL, termasuk menyarangkan fungsi TRY_CONVERT dalam fungsi ISNULL.
menggabungkan
Fungsi ISNULL bukan standar ANSI, jadi Anda mungkin ingin menggunakan fungsi COALESCE sebagai gantinya. COALESCE sedikit lebih fleksibel karena dapat mengambil jumlah variabel argumen, yang masing-masing adalah ekspresi. Fungsi ini akan mengembalikan ekspresi pertama dalam daftar yang bukan NULL.
Jika hanya ada dua argumen, COALESCE berjalan seperti ISNULL. Namun, dengan lebih dari dua argumen, COALESCE dapat digunakan sebagai alternatif untuk ekspresi CASE multi bagian menggunakan ISNULL.
Jika semua argumen adalah NULL, COALESCE mengembalikan NULL. Semua ekspresi harus mengembalikan tipe data yang sama atau kompatibel.
Sintaksisnya adalah sebagai berikut:
SELECT COALESCE ( expression1, expression2, [ ,...n ] )
Contoh berikut menggunakan tabel fiktif yang disebut HR. Upah, yang mencakup tiga kolom yang berisi informasi tentang penghasilan mingguan karyawan: tarif per jam, gaji mingguan, dan komisi per unit yang dijual. Namun, seorang karyawan hanya menerima satu jenis gaji. Untuk setiap karyawan, salah satu dari tiga kolom tersebut akan memiliki nilai, dua lainnya akan menjadi NULL. Untuk menentukan jumlah total yang dibayarkan kepada setiap karyawan, Anda dapat menggunakan COALESCE untuk mengembalikan hanya nilai, bukan nulll yang ditemukan dalam tiga kolom tersebut.
SELECT EmployeeID,
COALESCE(HourlyRate * 40,
WeeklySalary,
Commission * SalesQty) AS WeeklyEarnings
FROM HR.Wages;
Hasilnya mungkin terlihat seperti berikut ini:
ID Karyawan
Pendapatan Mingguan
1
899.76
2
1001.00
3
1298.77
...
...
NULLIF
Fungsi NULLIF memungkinkan Anda mengembalikan NULL dalam kondisi tertentu. Fungsi ini memiliki aplikasi yang berguna di area seperti pembersihan data, ketika Anda ingin mengganti karakter kosong atau tempat penampung dengan NULL.
NULLIF mengambil dua argumen dan mengembalikan NULL jika keduanya setara. Jika tidak sama, NULLIF mengembalikan argumen pertama.
Dalam contoh ini, NULLIF mengganti diskon 0 dengan NULL. NULLIF mengembalikan nilai diskon jika bukan 0:
SELECT SalesOrderID,
ProductID,
UnitPrice,
NULLIF(UnitPriceDiscount, 0) AS Discount
FROM Sales.SalesOrderDetail;
Hasilnya mungkin terlihat seperti berikut ini:
ID Pesanan Penjualan
ProductID
Harga Satuan
Diskon
71774
836
356.898
NOL
71780
988
112.998
0,4
71781
748
818.7
NOL
71781
985
112.998
0,4
...
...
...
...