|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() |
Bonjour,
Je cherche à savoir si il est possible de façon simple de compter le nombre d'occurences d'un terme dans un champ XML ou de simplifier mon futur traitement. Je m'explique : j'ai une table (contenant plus d'un million d'entrés) qui contient un champ id et un champ xml qui ressemble à : Code :
ID / ATTR1 / ATTR2 Je pensais faire du T-sql en passant par une table temporaire du type ID / ChampXML / NbOccurences (avec NbOccurence basé sur le nombre de <elem attr1 du champ) Et ensuite faire une double boucle en utilisant une requête du genre Code :
Sauf que mise à part passer par une fonction je ne vois pas d'autres solutions pour le nombre d'occurences. Si quelqu'un a des idées, je suis preneur. D'avance merci. |
||||
|
|
00
|
|
|
#2 | ||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
En utilisant seulement les nœuds, vous pouvez simplement écrire : Code :
Code :
Code :
Qui vous retournera : ![]() @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||||
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() |
Bonjour,
Merci pour cette réponse mais, mon soucis c'est que je ne pars pas d'un fichier xml mais déjà d'une table sur ma base remplie et possédant un champ xml lié à un id que je dois conserver. ex : Code :
Je suppose qu'en modifiant le from c'est faisable ? Mais j'ai un peu de mal à voir la syntaxe. |
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
inspirez vous de cet exemple Code SQL :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() |
Au vue des infos j'ai fait un curseur ne voyant pas d'autres solution :
Code :
En tout cas merci pour votre réponse elsuket, elle me sert comme base du coup à défaut de trouver sans curseur |
||
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() |
Oh nice !!
Merci aieeeuuuuu ! Ça marche nickel, je ne connais pas CROSS APPLY je vais voir du coup à quoi ça correspond Code :
|
||
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
par ailleurs, il vaut aussi mieux privilegier le Code SQL :
que le Enfin, notez que pour l'exemple, j'ai spécifié du VARCHAR(50), mais vous pouvez (et devriez) spécifier le type SQL qui convient en fonction du contenu de votre XML |
|||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() |
Je note tous ces bons conseils merci
Oui pour le type pour l'instant le moment test (car varchar 50 n'est pas suffisant niveau taille :p) |
|
|
00
|
|
|
#9 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Citation:
Quand vous codez en SQL, oubliez la logique ligne-à-ligne, puisque SQL est un langage ensembliste. D'autre part, SQL étant aussi un langage déclaratif, il ne vous est nécessaire de spécifier que ce que voulez obtenir, pas comment vous voulez l'obtenir : SQL Server sait le faire bien mieux que vous @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com