Wie entferne ich das letzte Zeichen in einer Zeichenfolge in T-SQL
?
Beispielsweise:
'TEST STRING'
zurückgeben:
'TEST STRIN'
sql
sql-server
tsql
Daveed
quelle
quelle
Wenn Ihre Spaltenlogik aus irgendeinem Grund komplex ist (Fall, wenn ... dann ... sonst ... endet), müssen Sie bei den oben genannten Lösungen dieselbe Logik in der Funktion len () wiederholen. Das Duplizieren derselben Logik wird zu einem Chaos. Wenn dies der Fall ist, ist dies eine bemerkenswerte Lösung. In diesem Beispiel wird das letzte unerwünschte Komma entfernt. Ich habe endlich eine Verwendung für die REVERSE-Funktion gefunden.
quelle
NULL
wenn eine Zeichenfolge übergeben wird, die kürzer als der angegebene Löschbereich istSTUFF
. Wickeln Sie es in einISNULL
, um einen anderen Ausgabewert für den leeren Zeichenfolgenfall zu erhalten.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Versuche dies:
quelle
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Jetzt geben beide Abfragen dasselbe zurück, da die Nummerierung auf 1 basiert. Dies bedeutet, dass das erste Zeichen im Ausdruck 1 ist. Wenn start kleiner als 1 ist, beginnt der zurückgegebene Ausdruck mit dem ersten Zeichen, das im Ausdruck angegeben ist. QuelleWenn Ihre Zeichenfolge leer ist,
dann verursacht dieser Code die Fehlermeldung 'Ungültiger Längenparameter an die Teilzeichenfolgenfunktion übergeben.'
Sie können folgendermaßen damit umgehen:
Es wird immer das Ergebnis und bei leerer Zeichenfolge NULL zurückgegeben.
quelle
quelle
Dies funktioniert auch dann, wenn der Quelltext / var null oder leer ist:
quelle
Wenn Ihre Spalte ist
text
und nichtvarchar
, können Sie dies verwenden:quelle
Wenn Sie dies in zwei Schritten tun möchten, anstatt in den drei Schritten von REVERSE-STUFF-REVERSE, kann Ihr Listentrennzeichen ein oder zwei Leerzeichen sein. Verwenden Sie dann RTRIM, um die nachfolgenden Leerzeichen zu kürzen, und REPLACE, um die doppelten Leerzeichen durch ',' zu ersetzen.
Dies ist jedoch keine gute Idee, wenn Ihre ursprüngliche Zeichenfolge interne Leerzeichen enthalten kann.
Ich bin mir nicht sicher über die Leistung. Jeder REVERSE erstellt eine neue Kopie des Strings, aber STUFF ist ein Drittel schneller als REPLACE.
sehe das auch
quelle
quelle
Ich kann das vorschlagen -hack-;).
SQL Server Fiddle Demo
quelle
Sie können eine Funktion erstellen
quelle
Versuche dies
quelle
Holen Sie sich das letzte Zeichen
quelle
Meine Antwort ähnelt der akzeptierten Antwort, sucht aber auch nach Null und Leerzeichenfolge.
quelle
Dies ist ziemlich spät, aber interessanterweise noch nie erwähnt.
dh:
quelle
Ich liebe die Antwort von @ bill-hoenig; Ich habe jedoch eine Unterabfrage verwendet und wurde eingeholt, weil die REVERSE-Funktion zwei Sätze von Klammern benötigte. Ich habe eine Weile gebraucht, um das herauszufinden!
quelle
So aktualisieren Sie den Datensatz durch Trimmen der letzten N Zeichen einer bestimmten Spalte:
quelle
Versuch es :
quelle
Ausgabe:
quelle
Versuche dies,
Und die Ausgabe wird wie THAMIZHMANI sein
quelle
quelle