Avec le code XML suivant:XML TSQL - Filtre nœuds LIKE 'x' Cross Appliquer
<Path>
<To>
<Value>
<Array>
<NumberDecimal>10.0</NumberDecimal>
<TextEnglish>Ten</TextEnglish>
<NumberRomanNumeral>X</NumberRomanNumeral>
</Array>
</Value>
</To>
</Path>
Comment pourrais-je filtrer la croix s'appliquent à tous/seulement Number***
noeuds xml?
SELECT child.value('concat(local-name(.),": ",.)', 'varchar(max)') AS [value]
FROM imports i
CROSS APPLY i.import_data.nodes('/Path/To/Value/Array/*[local-name(.) = ''NumberDecimal'']') AS nodes(child)
retours:
NumberDecimal: 10
a besoin d'être ceci:
SELECT child.value('concat(local-name(.),": ",.)', 'varchar(max)') AS [value]
FROM imports i
CROSS APPLY i.import_data.nodes('/Path/To/Value/Array/*[local-name(.) = ''Number/*'']') AS nodes(child)
besoin de retourner:
NumberDecimal: 10
NumberRomanNumeral: X
Mais il ne retourne rien ....
'Votre XML dans la question n'est pas valable que les balises de fermeture don ne correspondent pas à ceux d'ouverture. »- Correction. Désolé pour l'exemple mal écrit. – TaterJuice
+1 pour 'contains' mais je veux contrôler où sont les jokers ('%' dans TSQL), j'ai trouvé un article qui dit que je peux utiliser une fonction appelée 'matches' mais ça n'existe pas pour moi. – TaterJuice
@TaterJuice - yep SQL Server implémente seulement quelques fonctions XQuery https://docs.microsoft.com/en-us/sql/xquery/xquery-functions-against-the-xml-data-type –