I ont la colonne XML dans ma table qui peut contenir XML comme ces 2 dossiers:En utilisant XML.Query pour filtrer plusieurs valeurs
fiche 1, supposons que ID d'enregistrement est 1 et le contenu XML est
<content>
<node1 >10</node1>
<node2 >20</node2>
<node3 >30</node3>
<node4 >40</node4>
<node5 >50</node5>
</content>
fiche 2, supposons que ID d'enregistrement est 2 et le contenu XML est
<content>
<node_name_1 >10</node_name_1>
<hello >20</hello>
</content>
Je veux savoir ID d'enregistrements ayant une valeur de noeud interne de 10.
declare @ids nvarchar(500)
set @ids = '10';
select id from tablename
where
convert(nvarchar(max),xmlfieldname.query('data(/content/* = (sql:variable("@ids")) )')) = 'true'
Ceci fonctionne parfaitement, mais mon problème est quand je veux utiliser plusieurs valeurs pour les nœuds internes. Je veux savoir les ID des enregistrements dont les valeurs internes sont 10 ou 20. Cette requête fonctionne parfaitement:
select id from tablename
where
convert(nvarchar(max),xmlfieldname.query('data(/content/* = (10,20) )')) = 'true'
Mais quand j'utilise sql: variable, rien n'est retourné!
declare @ids nvarchar(500)
set @ids = '10,20';
select id from tablename
where
convert(nvarchar(max),xmlfieldname.query('data(/content/* = (sql:variable("@ids")) )')) = 'true'
comment puis-je utiliser quelque chose comme Select * from mytable NomChamp dans ('123', '456') en XML?