j'ai un champ de base de données avec des données comme les exemples ci-dessous:Parsing Out données en différentes longueurs pour être utilisé dans une procédure stockée pour calculer un champ
FEE 200 A 16 YN NYFIRE 32,8 C M0008 YN
INF 150 A 05 AA PFE 35 A 05 AA
NYFEE 200 A 16 YN
Je dois analyser toutes les valeurs avec un A devant eux, ou toutes les valeurs qui sont précédés d'un INF. Si elles sont précédées d'un INF j'ai besoin d'utiliser ces valeurs pour les déduire d'une formule en SQL. Si les valeurs ne sont pas précédées d'un INF, mais sont suivies d'un A, j'ai besoin d'ajouter ces valeurs dans une formule dans une procédure stockée. IMPORTANT, ce qui ressemble à des espaces dans les exemples sont des caractères CHAR (9). Il pourrait y avoir jusqu'à 9 séries de nombres qui ont un A avant eux ... les exemples ci-dessus montrent seulement 1 ou 2. Je peux extraire le premier en utilisant un charindex, mais je ne sais pas comment obtenir les A suivants . Je ne peux pas obtenir un patindex pour travailler avec '% [' + CHAR (9) + 'INF' + CHAR (9) + ']%', mais si je fais patindex sur 'INF' alors je ne peux pas obtenir juste la valeur suivante avec le 'INF' dans le cadre de la chaîne, je ne veux pas la partie 'INF'. Je ne sais pas comment analyser les valeurs dans une procédure stockée, ou pas du tout (j'ai essayé un certain nombre de choses comme mentionné ci-dessus), et n'ai pas été capable de trouver quoi que ce soit sauf comment analyser données sur des modèles spécifiques. Il n'y a pas toujours le même nombre d'espaces pour la valeur précédant le A, il pourrait y avoir 2 ou 3 caractères.
est ce SQL Server? Regardez les CTE récursifs. En outre, c'est un parfait exemple de pourquoi vous ne devriez stocker qu'une seule valeur dans une ligne/colonne. –