Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit NULL-Werten um, wenn Strings in MySQL verkettet werden?
Umgang mit NULL-Werten in MySQL CONCAT
Beim Verketten mehrerer Felder in MySQL mithilfe der CONCAT()-Funktion kann das Ergebnis wie folgt aussehen NULL, wenn eines der Felder NULL-Werte enthält. Dies kann zu unerwarteten Ergebnissen bei Datenabrufvorgängen führen.
Berücksichtigen Sie die folgenden Daten in der Tabelle „Geräte“:
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
Beim Ausführen der folgenden Abfrage:
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name FROM devices
Wir erhalten das folgende Ergebnis:
cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora (NULL) (NULL)
Wie wir sehen können, kehren die Zeilen 3 und 4 zurück NULL, weil entweder os_type oder os_version NULL enthält. Um dies zu verhindern, können wir die Funktion COALESCE() verwenden, um jedes Feld in den Verkettungsausdruck einzuschließen. COALESCE() nimmt zwei oder mehr Werte an und gibt den ersten Nicht-NULL-Wert oder das letzte Argument zurück, wenn alle Werte NULL sind.
Daher wird die geänderte Abfrage zu:
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
Dies Die geänderte Abfrage gibt nun das gewünschte Ergebnis zurück:
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-
Indem wir jedes Feld in COALESCE() einschließen, stellen wir sicher, dass NULL-Werte ignoriert und durch einen ersetzt werden leere Zeichenfolge, was zu einem Verkettungsergebnis ungleich NULL führt.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Werten um, wenn Strings in MySQL verkettet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!