Bonjour, je débute en XQuery et malheureusement la requête que je dois réalisée n'est pas des plus simples, si quelqu'un pouvait m'aider...
J'ai une application C# avec une base de données SQL Server. Une de mes tables contient les champs suivant:
Table Document:
* IDDocument (INTEGER)
* Doc_Sommaire (XML)
Le champ Doc_Sommaire contient du xml ayant la structure suivante:
Mon application doit comparer une chaine avec tous les champs label du sommaire et renvoyer le IDDocument lorsque la comparaison est vrai.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <sommaire> <node label="Sommaire" isBranch="true"> <node label="Actus" isBranch="true"> <node label="L'actualité en bref" /> <node label="Agenda" /> </node> <node label="Outils" isBranch="true"> <node label="SonarJ et Maven surveillent votre architecture Java" /> </node> <node label="Evénement" isBranch="true"> <node label="TechDays 2008: c'est parti pour Windows Server 2008!" /> </node> <node label="Projets" isBranch="true"> <node label="Eclipse Process Framework Composer" /> </node> </node> </sommaire>
Par exemple en imaginant qu'un de mes documents contienne le xml ci-dessus dans son champ Doc_Sommaire, si je donne la chaine "Eclipse", ma requête doit me retourner son IDDocument car la chaine "Eclipse" fait bien parti du xml.
Voici ce que j'ai essayé mais cette requête ne fonctionne pas:
strSearch étant la chaine de recherche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT IDDocument FROM Document WHERE Doc_Sommaire.value('contains(//node[@label], " + strSearch + ")', 'bit')=1
Je pense que je dois pas être bien loin de la réponse, mais sur internet je n'ai réussi à trouver aucun exemple qui couvre mon cas de figure!
Merci pour votre aide!
Partager