Adakah yang bisa menjelaskan bagaimana fungsi COALESCE di TSQL bekerja? Sintaksnya adalah sebagai berikut
COALESCE (x, y)
Dokumen MSDN tentang fungsi ini cukup kabur
sql
sql-server
sql-server-2008
tsql
Lloyd Banks
sumber
sumber
ISNULL
, ini bukan standar, kurang fleksibel, saya membaca bahwa itu akan selalu mengembalikan tipe data dari argumen pertama dan bukan tipe data dari nilai yang dikembalikan sepertiCOALESCE
halnya.Saya tidak yakin mengapa menurut Anda dokumentasinya tidak jelas.
Ini hanya melewati semua parameter satu per satu, dan mengembalikan yang pertama
NOT NULL
.Ini menerima hampir semua jumlah parameter, tetapi mereka harus tipe data yang sama. (Jika mereka bukan tipe data yang sama, mereka secara implisit ditransmisikan ke tipe data yang sesuai menggunakan urutan prioritas tipe data .)
Ini seperti
ISNULL()
tetapi untuk beberapa parameter, bukan hanya dua.Itu juga
ANSI-SQL
, di manaISNULL()
tidak.sumber
ISNULL
mengembalikan nilai dengan tipe data yang sama dengan parameter pertama, meskipunexpressions
, perbandingan dengan CASE, perbandingan dengan ISNULL, dan terakhir contoh tanpa hasil. Kemudian contoh yang terlalu rumit dengan terlalu banyak detail. Ketika yang kita butuhkan hanyalah jawaban ini dengan 5 - 6 baris WTF, ini adalah dan melakukan.Inilah cara saya memandang COALESCE ... dan semoga masuk akal ...
Dalam bentuk yang sederhana….
Coalesce (FieldName, 'Empty')
Jadi ini diterjemahkan menjadi… Jika "FieldName" adalah NULL, isi nilai bidang dengan kata "KOSONG".
Sekarang untuk nilai mutliple ...
Menggabungkan (FieldName1, FieldName2, Value2, Value3)
Jika nilai di Fieldname1 adalah null, isi dengan nilai di Fieldname2, jika FieldName2 adalah NULL, isi dengan Value2, dll.
Kode tes untuk database sampel AdventureWorks2012 ini bekerja dengan sempurna & memberikan penjelasan visual yang baik tentang cara kerja COALESCE :
sumber
Ada lebih banyak hal untuk digabungkan dari sekedar pengganti ISNULL. Saya sepenuhnya setuju bahwa "dokumentasi" resmi penggabungan tidak jelas dan tidak membantu. Artikel ini sangat membantu. http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
sumber
Berikut adalah kueri sederhana yang berisi penggabungan -
Ini akan mengembalikan orang di mana addressId dan contactId adalah null.
fungsi penggabungan
misalnya
sumber
Definisi paling sederhana dari fungsi Coalesce () bisa jadi:
Catatan: ini mengevaluasi SEMUA parameter, yaitu tidak melewatkan evaluasi argumen di sisi kanan parameter yang dikembalikan / NOT NULL.
Sintaksis:
Hati-hati : Terlepas dari argumen yang mengevaluasi ke NULL, semua argumen (NOT-NULL) lainnya harus dari tipe data yang sama atau harus dari tipe yang cocok (yang dapat "secara implisit diubah secara otomatis" menjadi tipe data yang kompatibel), lihat contoh di bawah:
HTH
sumber
sumber