Mit dieser Lösung habe ich versucht, COALESCE als Teil einer MySQL-Abfrage zu verwenden, die mit SELECT As in eine CSV-Datei ausgegeben wird, um die Spaltennamen beim Exportieren der Daten 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: Vorname, Nachname und Kontakttelefon
Ich erhalte 5 Spalten: Vorname, Nachname, ContactPhoneAreaCode1, ContactPhoneNumber1 und Contact_Phone
Wie verstecke ich das Zusammenführen von ContactPhoneAreaCode1, ContactPhoneNumber1 in einer einzelnen Spalte für Contact_Phone innerhalb der Abfrage?
COALESCE
Gibt das erste Nicht-Null-Feld zurück. Wenn ContactPhoneAreaCode1 nicht null ist, entspricht Contact_Phone ContactPhoneAreaCode1. Sie möchten die FunktionCONCAT
Antworten:
Wenn beide Spalten enthalten
NULL
können, Sie sie aber dennoch zu einer einzigen 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
NULL
jede Spalte einzeln auf -ness prüfen .Wenn beide Spalten tatsächlich als definiert sind
NOT NULL
, reicht CONCAT () aus:SELECT FirstName AS First_Name , LastName AS Last_Name , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone FROM TABLE1
Was das angeht
COALESCE
, ist es ein etwas anderes Biest: Angesichts der Liste der Argumente wird das erste zurückgegeben, das nicht vorhanden istNULL
.quelle
' '
funktioniert das nicht.' '
am Anfang gesetzt, sondern zwischen den Spalten :-PSie müssen ContactPhoneAreaCode1 und ContactPhoneNumber1 nicht auflisten
SELECT FirstName AS First_Name, LastName AS Last_Name, COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone FROM TABLE1
quelle
Sie müssen die Spalten nicht separat auswählen, um sie in Ihrem CONCAT zu verwenden. Entfernen Sie sie einfach und Ihre Anfrage wird:
SELECT FirstName AS First_Name , LastName AS Last_Name , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone FROM TABLE1
quelle
Im Fall von
NULL
Spalten ist es besser , zu verwendenIF
Klausel wie diese , die die beiden Funktionen kombinieren:CONCAT
undCOALESCE
und verwendet Sonderzeichen zwischen den Spalten in Folge wie Raum oder ‚_‘SELECT FirstName , LastName , IF(FirstName IS NULL AND LastName IS NULL, NULL,' _ ',CONCAT(COALESCE(FirstName ,''), COALESCE(LastName ,''))) AS Contact_Phone FROM TABLE1
quelle