La meilleure façon d’apprendre quelque chose est de revisiter certains des anciens blogs et ensuite de chercher à trouver une façon plus efficace de travailler sur le même problème. Récemment, j’ai consulté les forums et j’ai constaté qu’une question revenait sans cesse concernant la création d’une liste séparée par des virgules. Ce n’est pas nouveau sur ce blog et si vous cherchez, vous en trouverez peu. Il y a longtemps, j’ai écrit ci-dessous blogs pour montrer les valeurs stockées dans la table comme une liste séparée par des virgules – ce n’est pas une reprise de ce qui a été écrit avant, mais une nouvelle façon de résoudre le problème à nouveau.
SQL SERVER – Création d’une liste de valeurs séparées par des virgules à partir d’une table – UDF – SP
SQL SERVER – Valeurs séparées par des virgules (CSV) à partir d’une colonne de table
Récemment, quelqu’un m’a demandé un inverse de cela. Ils stockaient des valeurs séparées par des virgules dans une colonne de table. Cette table était alimentée à partir d’une certaine source via le package SSIS. Voici la version simplifiée du problème qui m’a été présenté.
DECLARE @t TABLE(EmployeeID INT,Certs VARCHAR(8000))INSERT @t VALUES (1,'B.E.,MCA, MCDBA, PGDCA'), (2,'M.Com.,B.Sc.'), (3,'M.Sc.,M.Tech.')
Voici à quoi ressemblent les données dans la table.
Avec les données ci-dessus disponibles, ils veulent les diviser en valeurs individuelles. En cherchant des solutions possibles, voici la requête de solution à laquelle j’ai abouti :
SELECT EmployeeID,LTRIM(RTRIM(m.n.value('.','varchar(8000)'))) AS CertsFROM(SELECT EmployeeID,CAST('<XMLRoot><RowData>' + REPLACE(Certs,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS xFROM @t)tCROSS APPLY x.nodes('/XMLRoot/RowData')m(n)
La sortie ressemble à ce qui suit .
J’espère que cela vous aidera dans votre projet. Faites-moi savoir si vous êtes en mesure de trouver une solution différente pour le même problème. La meilleure façon d’apprendre est d’apprendre les uns des autres.
0 commentaire