Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sous-chaîne après un espace

Voici une version utilisant SUBSTRING et CHARINDEX pour les versions de SQL SERVER antérieures à SQL Server 2016 lorsque STRING_SPLIT a été introduit.

L'une des œuvres suivantes :

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

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

Nous devons trouver la position de l'espace en utilisant CHARINDEX (qui renvoie un nombre représentant où la chaîne (l'espace) commence. Cependant la chaîne que nous voulons sélectionner commence après l'espace, donc nous devons ajouter 1 (+1) à la position de départ de notre SUBSTRING afin que la position de départ devienne CHARINDEX(' ', @string) + 1.

Le 3ème argument pour SUBSTRING est la longueur de la chaîne à sélectionner, dans le premier cas, je suppose simplement que la chaîne que vous avez spécifiée en tant que varchar (20) ne peut pas dépasser 20 caractères, donc moi en utilisant 20. Remarque SUBSTRING n'essaiera pas de sélectionnez les caractères après la fin de la chaîne, il est donc prudent de spécifier une longueur supérieure au nombre de caractères restants.

Mon deuxième exemple obtient la longueur de la chaîne à sélectionner en fonction de la longueur de la chaîne totale (DATALENGTH) moins le nombre de caractères avant notre sélection (CHARINDEX + 1)