Saya baru saja membaca dokumentasi untuk ujian SQL Server 2012 dan saya melihat poin berikut:
case versus isnull versus coalesce
Sekarang, saya tahu BAGAIMANA untuk menggunakan masing-masing tetapi saya tidak tahu KAPAN menggunakan masing-masing. Tolong bisakah seseorang mengklarifikasi. Terima kasih.
Ps. Tolong bisakah kita memiliki tanda untuk pertanyaan ujian?
sql-server
sql-server-2012
Stuart Blackler
sumber
sumber
COALESCE
diperluas keCASE
tetapi jelas dalamCASE
pernyataan yang Anda tulis sendiri Anda bisa lebih fleksibel dalamWHEN
kondisi. UntukISNULL
vsCOALESCE
terkait / duplikat?Jawaban:
ISNULL - hanya tersedia di SQL Server. Mengizinkan pengujian dan penggantian nilai NULL dengan satu sama lain.
COALESCE - standar ANSI. Mengizinkan pengujian dan penggantian nilai NULL dengan nilai non-nol pertama dalam serangkaian panjang variabel. Penting untuk dicatat bahwa faktor-faktor prioritas tipe data menjadi hal ini
Dalam contoh di atas, 'a' adalah nilai non-nol pertama tetapi data karakter memiliki prioritas lebih rendah daripada integer.
Pertimbangan lain antara ISNULL vs COALESCE adalah resultan dari ISNULL yang ditentukan untuk TIDAK NULL sedangkan hasil dari panggilan COALESCE adalah NULLable. Lihat posting JRJ ISNULL () <> COALESCE () Meskipun itu mungkin hal yang sepele, pengoptimal kueri dapat membuat rencana yang berbeda berdasarkan pada ketidakmungkinan kolom.
Anda dapat dengan mudah menguji nullability ekspresi isnull / coalesce / case Anda dengan menjalankannya melalui dmo sys.dm_exec_describe_first_result_set
CASE - Juga fungsi skalar standar ANSI. Saya akan melihat menggunakan CASE selama dua sebelumnya ketika saya memiliki tes yang tidak dapat diungkapkan dalam skalar sederhana tapi itu jawaban yang cukup lemah, saya akui.
sumber
COALESCE
. Terima kasih lagiCASE
secara teknis adalah ekspresi, bukan fungsi.ISNULL memberi Anda kemungkinan untuk mengembalikan 1 repalcement, COALESCE tidak terbatas pada satu Nilai mis.
COALESCE(v1,v2,v3,v4,v5)
Jika V5 adalah satu-satunya Nilai yang BUKAN NULL itu akan dikembalikansumber