Saya ingin menerapkan operator bersyarat terner di MySQL. Saya memiliki tabel dengan satu id bidang. Nilainya mungkin nol. Saya ingin menampilkan id
dalam format kondisional terner seperti ini:
select id = id == null ? 0 : id;
Apakah mungkin di MySQL?
mysql
conditional-operator
pengguna1086355
sumber
sumber
Jawaban:
Coba ini :
select if(Id is null, 0, id) as Id;
sumber
null
atau''
dan bahkan mungkin0
. mySQL terkadang sedikit tidak menyenangkanDokumentasinya adalah teman Anda; kamu harus membacanya!
Ia mengatakan:
Dan banyak contoh. Ini sama dengan menggunakan kondisional terner dengan perbandingan
NULL
dan subjek pembanding sebagai operan kedua; bahwa tidak kebetulan menggunakan simbol-simbol itu?
dan:
untuk membawa Anda ke sana tidak benar-benar relevan dengan apa pun.Jadi, dalam kasus Anda:
SELECT IFNULL(`id`, 0) FROM `table`
Jika Anda sangat ingin memberikan tiga operan secara eksplisit (mengapa ?!), maka beralihlah ke
IF
:SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
sumber
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
lebih singkat.IF
alih-alihIFNULL
atauCOALESCE
karena saya memigrasi data ke database vendor yang berbeda dan tidak ingin mengimpor nilai bukan null, hanya menafsirkannya sebagai status umum.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
bekerja untuk saya.Ada dua cara untuk mengimplementasikan logika yang sama sebagai operator terner:
IF
fungsi tersebut, misalnya.IF(expression, true result, false result)
Gunakan
CASE
ekspresi, mis.CASE WHEN expression THEN <true result> ELSE <false_result> END
Saat Anda memeriksa NULL maka Anda dapat menggunakan fungsi
IFNULL
atauCOALESCE
, misalnya.sumber