Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit NULL-Werten um, wenn Strings in MySQL verkettet werden?

Wie gehe ich mit NULL-Werten um, wenn Strings in MySQL verkettet werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 04:58:10486Durchsuche

How to Handle NULL Values When Concatenating Strings in MySQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn