Sous-chaîne après un espace
Je veux découper une chaîne et d'obtenir la valeur après l'espace. Je peux obtenir la valeur à l'avant de l'espace, mais comment obtenir de la chaîne après l'espace.
DECLARE @string varchar(20)
SELECT @string = 'Test Name'
SELECT SUBSTRING(@string, 0, CHARINDEX(' ', @string))
Edit: je suis à l'aide de sql server 2012
- Avez-vous toujours 2 pièces (1 espace) ou vous voulez couper une chaîne de caractères à chaque apparition du personnage choisi? Ce sur plusieurs espaces?
Vous devez vous connecter pour publier un commentaire.
Voici une version à l'aide de
SUBSTRING
etCHARINDEX
pour les versions de SQL SERVER antérieures à SQL SERVER 2016 lors deSTRING_SPLIT
a été introduit.L'une des œuvres suivantes:
Nous avons besoin de trouver la position de l'espace à l'aide de CHARINDEX (qui renvoie un nombre représentant où la chaîne (de l'espace) commence. Toutefois, la chaîne de caractères que nous voulons sélectionner commence après l'espace, nous devons donc ajouter 1 (+1) à la position de départ de notre sous-CHAÎNE de sorte que la position de départ devient CHARINDEX(' ', @string) + 1.
Le 3ème argument de la sous-CHAÎNE est la longueur de la chaîne pour sélectionner, dans le premier cas, je viens de supposer que la chaîne que vous avez spécifié comme un varchar(20) peut être pas plus de 20 caractères où moi, en utilisant 20. Note de sous-CHAÎNE ne va pas essayer de sélectionner les caractères après la fin de la chaîne, de sorte qu'il est sûr de spécifier une longueur plus longue que le nombre de caractères restants.
Mon deuxième exemple, on 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 de notre sélection (CHARINDEX + 1)
N'utilisez pas de sous-chaîne, mais l'utilisation
string_split
. Cette fonction retourne un tableau de chaînes de caractères.Renvoie le tableau ci-après:
Plus d'informations peuvent être trouvées ici: https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql