Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Substring após um espaço


Aqui está uma versão usando SUBSTRING e CHARINDEX para versões do SQL SERVER anteriores ao SQL Server 2016 quando STRING_SPLIT foi introduzido.

Qualquer um dos seguintes funciona:
SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)

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

Precisamos encontrar a posição do espaço usando CHARINDEX (que retorna um número que representa onde a string (o espaço) começa. Porém a string que queremos selecionar começa após o espaço, portanto devemos adicionar 1 (+1) ao posição inicial de nossa SUBSTRING para que a posição inicial se torne CHARINDEX(' ', @string) + 1.

O terceiro argumento para SUBSTRING é o comprimento da string a ser selecionada, no primeiro caso, apenas assumo que a string que você especificou como varchar(20) não pode ter mais de 20 caracteres, portanto, usei 20. Nota SUBSTRING não tentará selecione caracteres após o final da string, portanto, é seguro especificar um comprimento maior que o número de caracteres restantes.

Meu segundo exemplo obtém o comprimento da string a ser selecionada com base no comprimento da string total (DATALENGTH) menos o número de caracteres antes de nossa seleção (CHARINDEX + 1)