Saya memiliki data berikut di "perangkat" tabel saya
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
Saya mengeksekusi query di bawah ini
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Ini mengembalikan hasil yang diberikan di bawah ini
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Bagaimana keluar dari ini sehingga harus mengabaikan NULL DAN hasilnya seharusnya
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-
COALESCE
fungsinya: mengembalikanNULL
parameter non- nilai pertama yang diteruskan (atauNULL
jika semua parameterNULL
). Dengan melewatkan string kosong sebagai parameter kedua, Anda menjamin itu tidak akan kembaliNULL
.Gunakan CONCAT_WS sebagai gantinya:
sumber
Untuk memiliki fleksibilitas yang sama dalam CONCAT_WS seperti pada CONCAT (jika Anda tidak ingin pemisah yang sama antara setiap anggota misalnya) gunakan yang berikut ini:
sumber
sumber
CONCAT_WS
masih menghasilkan null untuk saya jika bidang pertama adalah Null. Saya memecahkan ini dengan menambahkan string panjang nol di awal seperti padanamun
menghasilkan Null ketika bidang pertama adalah Null.
sumber
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
Anda bisa menggunakan statement if seperti di bawah ini
sumber