sql >> Base de Datos >  >> RDS >> Sqlserver

Subcadena después de un espacio

Aquí hay una versión que usa SUBSTRING y CHARINDEX para versiones de SQL SERVER anteriores a SQL Server 2016 cuando STRING_SPLIT fue presentado.

Cualquiera de los siguientes trabajos:

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

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

Necesitamos encontrar la posición del espacio usando CHARINDEX (que devuelve un número que representa dónde comienza la cadena (el espacio). Sin embargo, la cadena que queremos seleccionar comienza después del espacio, por lo tanto, debemos agregar 1 (+1) a la posición inicial de nuestra SUBCADENA para que la posición inicial se convierta en CHARINDEX(' ', @cadena) + 1.

El tercer argumento para SUBSTRING es la longitud de la cadena para seleccionar, en el primer caso simplemente asumo que la cadena que especificó como varchar (20) no puede tener más de 20 caracteres, por lo tanto, uso 20. Tenga en cuenta que SUBSTRING no intentará seleccionar caracteres más allá del final de la cadena, por lo que es seguro especificar una longitud mayor que la cantidad de caracteres restantes.

Mi segundo ejemplo obtiene la longitud de la cadena para seleccionar en función de que sea la longitud de la cadena total (DATALENGTH) menos la cantidad de caracteres antes de nuestra selección (CHARINDEX + 1)