Rumah > pangkalan data > tutorial mysql > Mengapa CONCAT MySQL Kembali NULL Apabila Medan Mengandungi Nilai NULL, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa CONCAT MySQL Kembali NULL Apabila Medan Mengandungi Nilai NULL, dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-27 04:25:11
asal
1045 orang telah melayarinya

Why Does MySQL's CONCAT Return NULL When Fields Contain NULL Values, and How Can I Fix It?

MySQL CONCAT Mengembalikan NULL untuk Medan yang Mengandungi NULL: Penyelesaian dan Alternatif

Fungsi CONCAT MySQL menggabungkan berbilang medan menjadi satu rentetan. Walau bagaimanapun, ia boleh menjadi masalah apabila sesetengah medan mengandungi nilai NULL, menyebabkan keseluruhan ungkapan mengembalikan NULL.

Gambaran Keseluruhan Masalah

Pertimbangkan jadual dan pertanyaan berikut:

Table: devices

| 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 |

Query:

SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Salin selepas log masuk

Pertanyaan ini mengembalikan nama peranti sebagai berikut:

cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Salin selepas log masuk

Penyelesaian: Gantikan NULL dengan Rentetan Kosong

Untuk mengabaikan nilai NULL dan sebaliknya menggabungkan rentetan kosong, anda boleh menggunakan fungsi COALESCE. COALESCE mengambil berbilang argumen dan mengembalikan argumen bukan NULL yang pertama.

Berikut ialah pertanyaan yang diubah suai:

SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name
FROM devices
Salin selepas log masuk

Pertanyaan ini 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-
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa CONCAT MySQL Kembali NULL Apabila Medan Mengandungi Nilai NULL, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan