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

Comment diviser une chaîne pour pouvoir accéder à l'élément x ?

Je ne crois pas que SQL Server ait une fonction de division intégrée, donc à part un UDF, la seule autre réponse que je connaisse est de détourner la fonction PARSENAME :

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2) 

PARSENAME prend une chaîne et la divise sur le caractère point. Il prend un nombre comme deuxième argument, et ce nombre spécifie le segment de la chaîne à renvoyer (de l'arrière vers l'avant).

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3)  --return Hello

Le problème évident est lorsque la chaîne contient déjà un point. Je pense toujours qu'utiliser une UDF est le meilleur moyen... avez-vous d'autres suggestions ?