spalte - mysql straight_join



MySQL SELECT AS fasst zwei Spalten zu einer zusammen (3)

Im Falle von NULL Spalten ist es besser, die IF Klausel wie folgt zu verwenden, die die beiden Funktionen CONCAT und COALESCE und spezielle Zeichen zwischen den Spalten im Ergebnis wie Leerzeichen oder '_' verwendet

SELECT FirstName , LastName , 
IF(FirstName IS NULL AND LastName IS NULL, NULL,' _ ',CONCAT(COALESCE(FirstName ,''), COALESCE(LastName ,''))) 
AS Contact_Phone FROM   TABLE1

Mit dieser Lösung habe ich versucht, COALESCE als Teil einer MySQL-Abfrage zu verwenden, die in einer CSV-Datei mit SELECT As ausgegeben wird, um beim Exportieren der Daten die Spaltennamen zu benennen.

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , ContactPhoneAreaCode1
     , ContactPhoneNumber1
     , COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Ich wollte 3 Spalten: First_Name, Last_Name und Contact_Phone

Ich erhalte 5 Spalten: First_Name, Last_Name, ContactPhoneAreaCode1, ContactPhoneNumber1 und Contact_Phone

Wie kann ich das Zusammenführen von ContactPhoneAreaCode1, ContactPhoneNumber1 in einer einzigen Spalte für Contact_Phone innerhalb der Abfrage ausblenden?


Answer #1

Sie müssen ContactPhoneAreaCode1 und ContactPhoneNumber1 nicht auflisten

SELECT FirstName AS First_Name, 
LastName AS Last_Name, 
COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
FROM TABLE1

Answer #2

Wenn beide Spalten NULL enthalten können, Sie sie jedoch dennoch zu einer einzelnen Zeichenfolge zusammenführen möchten, ist die einfachste Lösung die Verwendung von CONCAT_WS() :

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT_WS('', ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Auf diese Weise müssen Sie nicht für jede Spalte separat auf NULL Wert prüfen.

Wenn beide Spalten tatsächlich als NOT NULL definiert sind, reicht CONCAT() aus:

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Was COALESCE , so ist es ein bisschen anders: COALESCE die Liste der Argumente angegeben wird, wird die erste zurückgegeben, die nicht NULL .





sql