Ich habe folgende Daten in meiner 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
Ich habe unten Abfrage ausgeführt
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Es gibt das unten angegebene Ergebnis zurück
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Wie man daraus herauskommt, dass es NULL ignoriert UND das Ergebnis sollte sein
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-
COALESCE
Funktion tut: Sie gibt den ersten Nicht-NULL
Wert-Parameter zurück, der an sie übergeben wurde (oderNULL
ob alle Parameter vorhanden sindNULL
). Indem Sie eine leere Zeichenfolge als zweiten Parameter übergeben, stellen Sie sicher, dass diese nicht zurückgegeben wirdNULL
.Verwenden Sie stattdessen CONCAT_WS :
quelle
Verwenden Sie Folgendes, um in CONCAT_WS die gleiche Flexibilität wie in CONCAT zu haben (wenn Sie beispielsweise nicht zwischen jedem Mitglied das gleiche Trennzeichen möchten):
quelle
quelle
CONCAT_WS
erzeugt für mich immer noch null, wenn das erste Feld Null ist. Ich habe dies gelöst, indem ich am Anfang wie in eine Zeichenfolge mit der Länge Null hinzugefügt habejedoch
erzeugt Null, wenn das erste Feld Null ist.
quelle
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
Sie können die if-Anweisung wie unten verwenden
quelle