У меня есть следующие данные в моей таблице "устройства"
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
Я выполнил ниже запрос
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Возвращает результат, указанный ниже
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Как из этого выйти так, чтобы он игнорировал NULL И результат должен быть
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
делает функция: она возвращает первый ненулевойNULL
параметр, переданный ей (или,NULL
если все параметры естьNULL
). Передавая пустую строку в качестве второго параметра, вы гарантируете, что он не вернетсяNULL
.Вместо этого используйте CONCAT_WS :
источник
Чтобы иметь такую же гибкость в CONCAT_WS, как и в CONCAT (если вы не хотите использовать один и тот же разделитель для каждого члена, например), используйте следующее:
источник
источник
CONCAT_WS
все еще производит нуль для меня, если первое поле Нуль. Я решил это, добавив строку нулевой длины в начале, как втем не мение
выдает Null, когда первое поле равно Null.
источник
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
Вы можете использовать, если заявление, как показано ниже
источник