Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit NULL-Werten in der MySQL-CONCAT-Funktion um?
NULL-Behandlung in MySQL CONCAT
Bei der Verwendung der MySQL CONCAT-Funktion ist es wichtig, die Auswirkungen von NULL-Werten zu berücksichtigen. Wenn eines der an der Verkettung beteiligten Felder NULL enthält, ist auch das gesamte Ergebnis NULL. Dies kann zu unerwarteten Ergebnissen bei Abfragen und Berichten führen.
Szenario:
Betrachten Sie eine Tabelle mit dem Namen „Geräte“ mit den folgenden Daten:
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 |
Problem:
Die folgende Abfrage zielt darauf ab, die Werte aus mehreren Feldern zu verketten, um sie zu erstellen ein „Gerätename“:
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name FROM devices;
Aufgrund der NULL-Werte in den Zeilen 3 und 4 enthält das Ergebnis jedoch NULL für diese Zeilen:
cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora (NULL) (NULL)
Lösung:
Um dieses Problem zu lösen, können Sie die Funktion COALESCE verwenden, um NULL-Werte vor der Verwendung in leere Zeichenfolgen umzuwandeln CONCAT. Die COALESCE-Funktion akzeptiert mehrere Argumente und gibt den ersten Nicht-NULL-Wert in der Liste zurück:
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices;
Diese aktualisierte Abfrage führt zur gewünschten Ausgabe:
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-
Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Werten in der MySQL-CONCAT-Funktion um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!