Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mengganti NULL dengan Nilai Lain di SQL Server – ISNULL()

Saat menanyakan database SQL Server, mungkin ada saat di mana Anda tidak ingin nilai nol dikembalikan dalam kumpulan hasil Anda. Dan mungkin ada saat-saat di mana Anda ingin mereka kembali. Tetapi mungkin ada saat-saat di mana Anda menginginkannya dikembalikan, tetapi dengan nilai yang berbeda.

Itulah ISNULL() fungsinya untuk.

ISNULL() adalah fungsi T-SQL yang memungkinkan Anda mengganti NULL dengan nilai tertentu pilihan Anda.

Contoh

Berikut kueri dasar yang mengembalikan kumpulan hasil kecil:

SELECT TaskCode AS Result
FROM Tasks;

Hasil:

Result
------
cat123
null  
null  
pnt456
rof789
null  

Kita dapat melihat bahwa ada tiga baris yang berisi nilai null.

Jika kita tidak ingin nilai null muncul seperti itu, kita bisa menggunakan ISNULL() untuk mengganti null dengan nilai yang berbeda.

Seperti ini:

SELECT ISNULL(TaskCode, 'N/A') AS Result 
FROM Tasks;

Hasil:

Result
------
cat123
N/A   
N/A   
pnt456
rof789
N/A   

Kita juga bisa menggantinya dengan string kosong:

SELECT ISNULL(TaskCode, '') AS Result 
FROM Tasks;

Hasil:

Result
------
cat123
      
      
pnt456
rof789
        

Perhatikan bahwa ISNULL() mensyaratkan bahwa argumen kedua adalah tipe yang dapat secara implisit dikonversi ke tipe data argumen pertama. Itu karena mengembalikan hasil menggunakan tipe data argumen pertama.

Mencegah  Baris Null agar Tidak Menghilang

Ada beberapa fungsi T-SQL di mana nilai nol dihilangkan dari kumpulan hasil. Dalam kasus seperti itu, nilai nol tidak akan dikembalikan sama sekali.

Meskipun ini mungkin merupakan hasil yang diinginkan dalam beberapa kasus, dalam kasus lain ini bisa menjadi bencana, tergantung pada apa yang perlu Anda lakukan dengan data setelah dikembalikan.

Salah satu contoh fungsi tersebut adalah STRING_AGG() . Fungsi ini memungkinkan Anda mengembalikan set hasil sebagai daftar yang dibatasi. Namun, itu juga menghilangkan nilai nol dari kumpulan hasil. Jadi jika kita menggunakan fungsi ini dengan contoh data di atas, kita akan mendapatkan tiga hasil, bukan enam:

SELECT STRING_AGG(TaskCode, ', ') AS Result 
FROM Tasks;

Hasil:

Result                
----------------------
cat123, pnt456, rof789

Jadi tiga baris yang berisi nilai nol tidak dikembalikan.

Dalam banyak kasus, ini adalah hasil yang sempurna, karena kumpulan hasil kami tidak dipenuhi dengan nilai nol. Namun, hal ini juga dapat menyebabkan masalah, bergantung pada data yang akan digunakan.

Oleh karena itu, jika kita ingin mempertahankan baris dengan nilai null, kita dapat menggunakan ISNULL() untuk mengganti nilai nol dengan nilai lain:

SELECT STRING_AGG(ISNULL(TaskCode, 'N/A'), ', ') AS Result 
FROM Tasks;

Hasil:

Result                                        
-------------------------------------
cat123, N/A, N/A, pnt456, rof789, N/A

Fungsi COALESCE()

ISNULL() fungsi bekerja dengan cara yang mirip dengan COALESCE() fungsi. Jadi kita bisa mengganti kode di atas dengan ini:

SELECT STRING_AGG(COALESCE(TaskCode, 'N/A'), ', ') AS Result 
FROM Tasks;

Dan dapatkan hasil yang sama:

Result                                        
-------------------------------------
cat123, N/A, N/A, pnt456, rof789, N/A

Namun, ada beberapa perbedaan dalam cara kedua fungsi tersebut berperilaku. Untuk informasi lebih lanjut tentang perbedaannya, berikut perbandingan COALESCE() dan ISNULL() di situs web Microsoft.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Stempel Waktu Unix ke Nilai Tanggal/Waktu di SQL Server

  2. Cara Memperbaiki "Skema partisi '...' tidak memiliki filegroup yang digunakan berikutnya" di SQL Server

  3. SQL pilih di mana tidak dalam subquery tidak mengembalikan hasil

  4. Bagaimana cara memasukkan karakter Arab ke dalam database SQL?

  5. Pelajari Cara Melakukan Analisis Produk dengan Pencarian Teks Lengkap SQL Server. Bagian 2