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

SQL Server 2005 :diviser la chaîne en tableau et obtenir un tableau (x) ?

Je suppose ici qu'il y a toujours exactement 4 parties.

Si oui, vous pouvez remplacer / avec . et utilisez le joli ParseName fonction. Le seul problème de votre exemple est qu'il compte à partir de la fin, vous devez donc faire attention à la partie que vous voulez :

DECLARE @test VARCHAR(max);
SET @test = 'Peter/Parker/Spiderman/Marvel';
SET @test = Replace(@test, '/', '.');

SELECT Parsename(@test, 4),--returns Peter
       Parsename(@test, 3),--returns Parker
       Parsename(@test, 2),--returns Spiderman
       Parsename(@test, 1) --returns Marvel

S'il y a un nombre variable de parties, vous devrez trouver une fonction de fractionnement de chaîne pour le faire pour vous, il n'y en a pas une bonne intégrée. De nombreuses options peuvent être trouvées en recherchant SO :https://stackoverflow.com/search?q=[sql+server]+string+split

Mot d'avertissement - si vous essayez d'utiliser un numéro avec PARSENAME autre que 1-4, le résultat sera toujours NULL.