Wie funktioniert MySQL CONCAT IFNULL arbeiten mit mehr als zwei Werten?
Muss ich CONCAT
zwei Felder, wenn Sie beide existieren, und fügen Sie die Klammern um das zweite Feld. Ansonsten brauche ich nur die Liste das erste Feld.
Hier ist die einfache version:
SELECT id, CONCAT(name,' (',nickname,')') as name FROM user;
Solange name und nickname gleichzeitig vorhanden sind, sollten Sie die Ergebnisse erhalten möchten:
1 | Adam (Alpha Dog)
2 | Bob (Bobby)
3 | Charles (Charlie)
Aber wenn es kein Spitzname, den Sie nur überspringt, die ganze Sache als null
. Zum Beispiel: id 4
name Doug
, nickname null
ergibt:
4 | null
Was ich sehen möchte, ist es auf der Liste nur der name... so wie hier:
4 | Doug
Also schaute ich mir die CONCAT
IFNULL
. Aber ich habe eine harte Zeit, es richtig zu machen. Können Sie mir helfen?
Hier sind ein paar Beispiele von Dingen, die ich versucht habe:
SELECT id, CONCAT(IFNULL(name, ' (', nickname, ')', name) as name FROM user;
SELECT id, CONCAT(name, IFNULL(' (', nickname, ')')) as name FROM user;
Etwas zu zeigen, das warf mich aus zunächst. Als Spitzname ist null dann CONCAT('(',nickname,')') gibt auch null zurück.
InformationsquelleAutor Ryan | 2012-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie CONCAT_WS, die überspringt null-Zeichenfolgen:
ja, du hast Recht, ich bearbeitet und verwendet werden
concat_ws
InformationsquelleAutor fthiella
Können Sie verketten Sie die Klammern und die
nickname
, und verwenden Sie dann dieIFNULL
zu überprüfen, um zu sehen, ob das Ergebnis des Ausdrucks NULL ist.Wenn es null ist, ersetzen Sie die NULL mit einem leeren string, und dann verketten, dass die expression der
name
Spalte.HINWEIS: Die IFNULL-Funktion ist die Kurzform für:
oder die ANSI-Entsprechung:
Gibt es andere Ansätze, die genauso gut funktionieren. Aber Sie sind im Grunde alle müssen die gleiche Sache zu tun: überprüfen Sie, ob nickname ist NULL, und dann bedingt gehören die Klammern und den Spitznamen, oder ein leerer string.
InformationsquelleAutor spencer7593
Können Sie eine
CASE
Aussage:Sehen SQL Fiddle mit Demo
Oder:
Sehen SQL Fiddle mit Demo
Beide geben das gleiche Ergebnis:
InformationsquelleAutor Taryn
Versuchen Sie dies:
InformationsquelleAutor Saharsh Shah