Saya ingin menghindari banyak pemeriksaan seperti berikut dalam kode saya:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Saya pikir saya hanya bisa meminta kueri saya mengurus null dengan melakukan sesuatu seperti ini:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Saya menggunakan SQLite dan sepertinya tidak mengenali isnull
fungsinya. Saya juga mencoba beberapa yang setara yang dikenali di database lain ( NVL()
, IFNULL()
dan COALESCE()
), tetapi SQLite sepertinya tidak mengenali satupun dari mereka.
Apakah ada yang punya saran atau tahu cara yang lebih baik untuk melakukan ini. Sayangnya database tidak memiliki nilai default untuk semua bidang. Selain itu, saya perlu menggunakan beberapa LEFT JOIN
klausa dalam beberapa kasus, di mana beberapa bidang yang dikembalikan akan menjadi nol karena catatan yang cocok dalam LEFT JOIN
tabel tidak akan ada.
Coba ini
misalnya
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with '' select ifnull(NULL,'THIS IS NULL');-- More clearly....
The
ifnull()
fungsi mengembalikan salinan non-NULL pertama argumen, atau NULL jika kedua argumen adalah NULL.Ifnull()
harus memiliki tepat 2 argumen. Theifnull()
fungsi setara dengancoalesce()
dengan dua argumen.sumber
ifnull
saya inginkan ... Saya hanya perlu melepaskan tanda kurung siku yang saya gunakan.Jika tidak ada
ISNULL()
metode, Anda dapat menggunakan ekspresi ini sebagai gantinya:CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
Ini bekerja sama seperti
ISNULL(fieldname, 0)
.sumber
ifnull
adalah SQLite yang setara denganisnull
fungsi yang ditanyakan oleh pertanyaan tersebut. Kepada siapa pun yang membaca ini sekarang, silakan lihat jawaban SQLMenace (dari lebih dari satu setengah tahun sebelumnya) sebelum menulis solusi Anda sendiri menggunakanCASE
.CASE
pernyataan mungkin lebih masuk akal daripadaIFNULL
.isnull
di sistem lain dan saya tidak ingin mendorong orang untuk "menggulirkan milik mereka sendiri."Gunakan
IS NULL
atauIS NOT NULL
di WHERE-clause sebagai ganti metode ISNULL ():SELECT myField1 FROM myTable1 WHERE myField1 IS NOT NULL
sumber
myField1
memiliki nilai bukan nol, ia ingin mengganti nilai di kolom hasil dengan yang berbeda, jika nilai baris adalah null.Untuk setara dengan NVL () dan ISNULL () gunakan:
IFNULL(column, altValue)
column
: Kolom yang Anda evaluasi.altValue
: Nilai yang ingin Anda kembalikan jika 'kolom' adalah null.Contoh:
SELECT IFNULL(middle_name, 'N/A') FROM person;
* Catatan: Fungsi COALESCE () bekerja sama seperti pada database lain.
Sumber:
sumber
Anda dapat dengan mudah mendefinisikan fungsi tersebut dan menggunakannya kemudian:
atau versi minified yang sama:
sumber