Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Nilai NULL Apabila Menggabungkan Rentetan dalam MySQL?
Mengendalikan Nilai NULL dalam MySQL CONCAT
Apabila menggabungkan berbilang medan dalam MySQL menggunakan fungsi CONCAT(), ada kemungkinan hasilnya menjadi NULL jika mana-mana medan mengandungi nilai NULL. Ini boleh membawa kepada hasil yang tidak dijangka dalam operasi pengambilan data.
Pertimbangkan data berikut dalam jadual "peranti":
affiliate_name affiliate_location model ip os_type os_version cs1 inter Dell 10.125.103.25 Linux Fedora cs2 inter Dell 10.125.103.26 Linux Fedora cs3 inter Dell 10.125.103.27 NULL NULL cs4 inter Dell 10.125.103.28 NULL NULL
Apabila melaksanakan pertanyaan berikut:
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name FROM devices
kami mendapat keputusan berikut:
cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora (NULL) (NULL)
Seperti yang kita lihat, baris 3 dan 4 mengembalikan NULL kerana sama ada os_type atau os_version mengandungi NULL. Untuk mengelakkan ini, kita boleh menggunakan fungsi COALESCE() untuk membalut setiap medan dalam ungkapan penggabungan. COALESCE() mengambil dua atau lebih nilai dan mengembalikan nilai bukan NULL pertama, atau argumen terakhir jika semua nilai adalah NULL.
Oleh itu, pertanyaan yang diubah suai menjadi:
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
Ini pertanyaan yang diubah suai kini akan mengembalikan hasil yang diingini:
cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora cs3-Dell-10.125.103.27- cs4-Dell-10.125.103.28-
Dengan membalut setiap medan dalam COALESCE(), kami memastikan bahawa nilai NULL diabaikan dan digantikan dengan rentetan kosong, menghasilkan hasil gabungan bukan NULL.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai NULL Apabila Menggabungkan Rentetan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!