Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sottostringa dopo uno spazio

Ecco una versione che utilizza SUBSTRING e CHARINDEX per le versioni di SQL SERVER precedenti a SQL Server 2016 quando STRING_SPLIT è stato introdotto.

Uno dei seguenti lavori:

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

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

Dobbiamo trovare la posizione dello spazio usando CHARINDEX (che restituisce un numero che rappresenta dove inizia la stringa (lo spazio). Tuttavia la stringa che vogliamo selezionare inizia dopo lo spazio, quindi dobbiamo aggiungere 1 (+1) al posizione iniziale della nostra SUBSTRING in modo che la posizione iniziale diventi CHARINDEX(' ', @string) + 1.

Il 3° argomento per SUBSTRING è la lunghezza della stringa da selezionare, nel primo caso presumo solo che la stringa che hai specificato come varchar(20) non può essere più lunga di 20 caratteri, quindi io uso 20. Nota SUBSTRING non proverà a seleziona i caratteri oltre la fine della stringa, quindi è sicuro specificare una lunghezza maggiore del numero di caratteri rimasti.

Il mio secondo esempio ottiene la lunghezza della stringa da selezionare in base alla lunghezza della stringa totale (DATALENGTH) meno il numero di caratteri prima della nostra selezione (CHARINDEX + 1)