Comment puis-je Diviser une Chaîne Délimitée dans SQL Server Sans la Création d'une Fonction?

Je travaille avec une base de données SQL Server. J'ai une colonne qui contient une liste délimitée par des virgules, et j'ai besoin d'écrire une requête qui fend les valeurs de la liste en lignes. À partir de la navigation sur StackOverflow et le reste du web, je sais que c'est un problème commun. En fait, j'ai trouvé une analyse approfondie ici:

http://www.sommarskog.se/arrays-in-sql.html

Malheureusement, toutes les solutions que j'ai vu sur ce site et ailleurs, me demande de créer une fonction. Ce n'est pas une option pour moi, je manque les privilèges requis pour utiliser la commande CRÉER.

Sans CRÉER, je sais que je peux utiliser le PARSENAME fonction, quelque chose comme cela (Merci à Nathan Bedford à Comment puis-je diviser une chaîne afin que je puisse accéder à l'élément de x?.):

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

Cependant, PARSENAME fonctionne uniquement pour les listes de 4 points ou moins. Ma question est donc la suivante: Comment dois-je écrire une requête pour diviser une chaîne délimitée de plus de 4 éléments sans créer de nouveaux objets dans la base de données?

EDIT:

Merci à tous pour les réponses rapides. J'ai peut-être laissé de côté certaines informations importantes, je suis en interaction avec la base de données via une connexion ODBC. En plus de CRÉER des états, il semble y avoir d'autres déclarations qui ne fonctionnent pas. Par exemple, je n'arrive pas à utiliser DÉCLARER, dans une déclaration à définir une variable qui sera utilisée dans une autre déclaration. Aussi loin que je peux comprendre, je dois tout mettre dans une seule instruction SELECT (bien qu'AVEC semble également fonctionner pour la déclaration commune des tables). Malheureusement, toutes les solutions proposées à ce jour semblent exiger des déclarations de variable à l'extérieur de l'instruction SELECT, et qui ne fonctionne pas. S'il vous plaît garder avec moi-je suis en train d'apprendre que je vais.

OriginalL'auteur Todd | 2011-04-19