En utilisant cette solution , j'ai essayé d'utiliser COALESCE dans le cadre d'une requête MySQL qui renvoie dans un fichier csv en utilisant SELECT As pour nommer les noms de colonne lors de l'exportation des données.
SELECT FirstName AS First_Name
, LastName AS Last_Name
, ContactPhoneAreaCode1
, ContactPhoneNumber1
, COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
Je voulais 3 colonnes: First_Name, Last_Name et Contact_Phone
Je reçois 5 colonnes: Prénom, Nom, ContactPhoneAreaCode1, ContactPhoneNumber1 et Contact_Phone
Comment masquer la fusion de ContactPhoneAreaCode1, ContactPhoneNumber1 dans une colonne unique pour Contact_Phone dans la requête?
Si les deux colonnes peuvent contenir NULL
, mais que vous souhaitez toujours les fusionner en une seule chaîne, la solution la plus simple consiste à utiliser CONCAT_WS () =:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT_WS('', ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
De cette façon, vous ne devrez pas vérifier séparément NULL
ness de chaque colonne.
Alternativement, si les deux colonnes sont définies comme suit: NOT NULL
, CONCAT () suffira amplement:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
Quant à COALESCE
, c'est un peu différent: vu la liste des arguments, il retourne le premier qui n'est pas NULL
.
Vous n'avez pas besoin de lister ContactPhoneAreaCode1 et ContactPhoneNumber1
SELECT FirstName AS First_Name,
LastName AS Last_Name,
COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
Vous n'avez pas besoin de sélectionner les colonnes séparément pour les utiliser dans votre CONCAT. Supprimez-les simplement et votre requête deviendra:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
Dans le cas de NULL
colonnes, il est préférable d'utiliser la clause IF
comme celle-ci, qui combine les deux fonctions de: CONCAT
et COALESCE
et utilise des caractères spéciaux entre les colonnes du résultat, comme espace ou '_'
SELECT FirstName , LastName ,
IF(FirstName IS NULL AND LastName IS NULL, NULL,' _ ',CONCAT(COALESCE(FirstName ,''), COALESCE(LastName ,'')))
AS Contact_Phone FROM TABLE1