Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Substring nach einem Leerzeichen

Hier ist eine Version mit SUBSTRING und CHARINDEX für Versionen von SQL SERVER vor SQL Server 2016, wenn STRING_SPLIT wurde eingeführt.

Eines der folgenden Werke:

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, DATALENGTH(@string) - CHARINDEX(' ', @string) +1 )

Wir müssen die Position des Leerzeichens mit CHARINDEX finden (das eine Zahl zurückgibt, die darstellt, wo die Zeichenfolge (das Leerzeichen) beginnt. Die Zeichenfolge, die wir auswählen möchten, beginnt jedoch nach dem Leerzeichen, daher müssen wir 1 (+1) zu hinzufügen Startposition unseres SUBSTRING, sodass die Startposition CHARINDEX(' ', @string) + 1 wird.

Das dritte Argument für SUBSTRING ist die Länge der auszuwählenden Zeichenfolge. Im ersten Fall gehe ich einfach davon aus, dass die Zeichenfolge, die Sie als varchar(20) angegeben haben, nicht länger als 20 Zeichen sein darf, daher verwende ich 20. Beachten Sie, dass SUBSTRING dies nicht versucht Wählen Sie Zeichen nach dem Ende der Zeichenfolge aus, sodass Sie eine Länge angeben können, die länger ist als die Anzahl der verbleibenden Zeichen.

Mein zweites Beispiel erhält die Länge des auszuwählenden Strings basierend auf der Länge des gesamten Strings (DATALENGTH) minus der Anzahl der Zeichen vor unserer Auswahl (CHARINDEX + 1)