T-SQL: Beste Weg, um behandeln von NULL-Werten in string-Verkettung
Wenn in einer SELECT-Anweisung, die ich auswähle, eine verkettete Zeichenfolge, verwendet Werte aus der Tabelle(N) ich auswählen, was ist der beste Weg zu handhaben Null für diese Werte an, so dass ich noch meinen string? Wie in, wenn ich auswähle, Stadt, Bundesland und Land, die für einen Benutzer, und ich möchte ein drittes Feld, das verbindet Sie alle:
SELECT City, State, Country,
City + ', ' + State + ', ' + Country AS 'Location'
FROM Users
Jedoch, 'Location' ist NULL, wenn eines der drei Felder NULL ist (was passiert, wenn der Benutzer nicht aus den USA).
Meine aktuelle Lösung ist diese:
SELECT City, State, Country,
City + ', ' + COALESCE(State + ', ', '') + Country AS 'Location'
FROM Users
Aber ich war nicht sicher, ob dies nur ein hack und wenn es ist ein viel besserer Weg, es zu tun. Gedanken?
coalesce
ist eine gängige Praxis für diese. In Ihrem Fall würde man nur benötigenisnull
obwohl. mögliche Duplikate von SQL Server-String-Verkettung mit Null btw- Oops! Du hast Recht. Nicht sicher, warum es wiederum nicht, wenn ich gesucht oder eingegeben die Titel. Vielleicht, weil ich insbesondere put - "t-sql". Die Abstimmung zu schließen. Es ist immer ein wenig komisch Stimmen zu schließen Sie Ihre eigene Frage. Es kitzelt.
- Die Antwort auf die "doppelte" Frage nicht mich zu erregen, wenn. Es werden keine Trennzeichen zwischen den Spalten.
- Alt bedeutet nicht veraltet SO. Posten Sie Ihre Lust CTE gibt es auch. 🙂
- CTE ist nur da, damit die Abfrage funktioniert.. und produzieren die beispielhafte Ausgabe. Die Abfrage ist wirklich der Teil ohne CTE.
- Jetzt bist du zum Chor predigen. 🙂
- Ich habe keine Ahnung, was WAK ist, aber es sieht ziemlich cool aus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu vorhersehbar korrekt mit Komma zwischen je zwei Feldern, können Sie dieses Formular verwenden
Ausgabe
--ignore
Linie. Ich benutze es, um in einer Tabelle definieren, die für die SELECT-Abfrage erstellen, anstatt eine temporäre Tabelle.Können Sie mit Hilfe der Concat-Funktion in SQL 2012 und später
Ja, dass ist der Weg zu gehen. Sie könnte auch mit isnull (), sondern fügen sich mehr standard. Sie überlegen, ob Sie null-Werte in Stadt und Land als gut. Sie könnten auch erwägen, dass Benutzer möglicherweise haben multipel Adressen und mehr als eine Stadt, Staat, Land und vielleicht eine verbundene Tabelle, die wäre besser für diese Informationen.
ISNULL
umfasst, wie auch die anderen (chaining zusätzliche Optionen, die nötig gewesen wären, mehrereISNULL
Aussagen, zum Beispiel). Darüber hinausCOALESCE
ist auf SqlCE, in der Erwägung, dassISNULL
ist nicht.COALESCE
ist Teil des ANSI-92 SQL -ISNULL
ist nicht.coalesce
normalerweise tut was ich will,isnull
vielleicht, vielleicht auch nicht. (Eigentlichcoalesce
hat immer abgeholt ... der Typ, den ich wollte. Es wurden einige Fragen auf ALSO wo es die falsche Wahl war.)