Saya ingin memeriksa data, tetapi abaikan saja apakah itu nol atau kosong. Saat ini kueri adalah sebagai berikut ...
Select
Coalesce(listing.OfferText, company.OfferText, '') As Offer_Text,
from tbl_directorylisting listing
Inner Join tbl_companymaster company
On listing.company_id= company.company_id
Tapi saya ingin mendapatkan company.OfferTex
t jika listing.Offertext
string kosong, dan juga jika itu null.
Apa solusi berkinerja terbaik?
sql-server-2005
digiguru
sumber
sumber
Dalam contoh ini, jika
listing.OfferText
NULL, fungsi LEN () juga harus mengembalikan NULL, tetapi itu masih belum> 0.Memperbarui
Saya telah belajar beberapa hal dalam 5 1/2 tahun sejak memposting ini, dan melakukannya dengan sangat berbeda sekarang:
Ini mirip dengan jawaban yang diterima, tetapi juga memiliki fallback dalam kasus
Company.OfferText
juga nol. Tidak ada jawaban lain saat ini yang menggunakanNULLIF()
juga melakukan ini.sumber
sumber
Ini solusi lain:
sumber
Anda dapat menggunakan
ISNULL
dan memeriksa jawabannya dengan keluaran yang diketahui:sumber
Di SQL Server 2012 yang Anda miliki
IIF
, misalnya Anda dapat menggunakannya sepertiCara yang sama Anda dapat memeriksa apakah bidang kosong.
sumber
Gunakan fungsi LEN untuk memeriksa nilai nol atau kosong. Anda bisa menggunakan LEN (@SomeVarcharParm)> 0. Ini akan mengembalikan false jika nilainya NULL, '', atau ''. Ini karena LEN (NULL) mengembalikan NULL dan NULL> 0 menghasilkan false. Juga, LEN ('') mengembalikan 0. Lihat sendiri jalankan:
sumber
sumber
NULLIF()
dan menyatu ke string kosong jikacompany.OfferText
nol. Namun,NULLIF()
panggilan ke-2 di sini tidak ada gunanya, seolah-olah itu bernilai string kosong Anda tetap akan menyatu kembali ke string kosong.Kombinasi sederhana COALESCE dan NULLIF ini akan membantu:
Catatan: Tambahkan string kosong lain sebagai argumen COALESCE terakhir jika Anda ingin pernyataan mengembalikan string kosong daripada NULL jika kedua nilai adalah NULL.
sumber
Saya tahu ini adalah utas lama tetapi saya hanya melihat salah satu posting sebelumnya di atas dan itu tidak benar.
Jika Anda menggunakan LEN (...) untuk menentukan apakah bidang tersebut NULL atau KOSONG maka Anda perlu menggunakannya sebagai berikut:
sumber
Ini solusinya, tapi saya tidak tahu apakah itu yang terbaik ....
sumber
sumber
sintaks ini:
bekerja untuk saya di Microsoft SQL Server 2008 (SP3)
sumber
Untuk mencegah catatan dengan
Empty
atauNull
nilai dalam hasil SQLkita bisa menambahkan
..... WHERE Column_name != '' or 'null'
sumber
sumber
[Column_name]> '' mengecualikan Nulls dan string kosong. Ada ruang di antara tanda kutip tunggal.
sumber
Ini melayani ruang juga.
sumber