Apabila menggunakan fungsi MySQL CONCAT, selalunya ditemui bahawa fungsi mengembalikan NULL jika mana-mana medan yang digabungkan mengandungi NULL. Ini boleh membawa kepada hasil yang tidak lengkap atau tidak konsisten.
Dalam contoh yang disediakan, pertanyaan mendapatkan semula data daripada jadual "peranti" dan cuba menggabungkan lima medan ke dalam satu lajur bernama "device_name." Walau bagaimanapun, kerana sesetengah baris mempunyai nilai NULL dalam medan tertentu (cth., "os_type" dan "os_version"), fungsi CONCAT menghasilkan NULL untuk baris tersebut.
Untuk menyelesaikan isu ini dan menghalang nilai NULL daripada menjejaskan penggabungan, kita boleh menggunakan fungsi COALESCE. COALESCE mengambil dua atau lebih argumen dan mengembalikan nilai bukan NULL yang pertama. Dengan membalut setiap medan dalam COALESCE dengan rentetan kosong sebagai nilai lalai, kami boleh memastikan bahawa nilai NULL digantikan dengan rentetan kosong.
Pertanyaan yang diubah suai di bawah menggabungkan fungsi COALESCE:
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
Menggunakan COALESCE, pertanyaan kini akan menghasilkan hasil yang diingini, walaupun terdapat nilai NULL dalam beberapa medan:
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-
Teknik ini mengendalikan nilai NULL secara berkesan dalam proses penggabungan, memastikan hasil yang lengkap dan konsisten.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Fungsi CONCAT MySQL daripada Mengembalikan NULL Apabila Medan Mengandungi Nilai NULL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!