Tengo los siguientes datos en mi tabla "dispositivos"
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
Ejecuté debajo de la consulta
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Devuelve el resultado dado a continuación
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Cómo salir de esto para que ignore NULL Y el resultado debería ser
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
función: devuelve el primerNULL
parámetro sin valor que se le pasó (oNULL
si todos los parámetros sonNULL
). Al pasar una cadena vacía como segundo parámetro, está garantizando que no volveráNULL
.Use CONCAT_WS en su lugar:
fuente
Para tener la misma flexibilidad en CONCAT_WS que en CONCAT (si no quiere el mismo separador entre cada miembro, por ejemplo) use lo siguiente:
fuente
fuente
CONCAT_WS
todavía produce nulo para mí si el primer campo es Nulo. Resolví esto agregando una cadena de longitud cero al principio como ensin embargo
produce Nulo cuando el primer campo es Nulo.
fuente
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
puede usar si la declaración como a continuación
fuente