J'ai les données suivantes dans mon tableau "appareils"
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
J'ai exécuté la requête ci-dessous
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Il renvoie le résultat ci-dessous
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Comment en sortir pour qu'il ignore NULL ET le résultat devrait être
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
fonction: elle renvoie le premierNULL
paramètre sans valeur qui lui est passé (ouNULL
si tous les paramètres le sontNULL
). En passant une chaîne vide comme deuxième paramètre, vous garantissez qu'il ne reviendra pasNULL
.Utilisez plutôt CONCAT_WS :
la source
Pour avoir la même flexibilité dans CONCAT_WS que dans CONCAT (si vous ne voulez pas le même séparateur entre chaque membre par exemple), utilisez ce qui suit:
la source
la source
CONCAT_WS
produit toujours null pour moi si le premier champ est Null. J'ai résolu cela en ajoutant une chaîne de longueur nulle au début comme danstoutefois
produit Null lorsque le premier champ est Null.
la source
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
vous pouvez utiliser la déclaration if comme ci-dessous
la source