2010-12-02 5 views
2

J'ai le fragment XML simple suivant montré ci-dessous. A quoi ressemblerait le T-SQL si je voulais simplement extraire l'attribut 'EntityFriendlyName'?Comment extraire un élément d'un fichier XML?

<SimpleRuleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <EntityId>0</EntityId> 
    <EntityFriendlyName>ALine</EntityFriendlyName> 
</SimpleRuleValue> 

Répondre

3

Ce serait quelque chose comme ceci:

SELECT CAST(X.SomeXML AS XML).value('(SimpleRuleValue/EntityFriendlyName)[1]','nvarchar(1000)') AS EntityFriendlyName 
FROM XmlSource X 

Edit: A little more information.

+2

Si l'on suppose que la colonne 'X' est déjà de type XML, vous pourriez simplifier à 'SELECT X.value (.....)' –

+0

Correct marc_s, c'était actua J'ai trouvé une solution générique à un problème similaire auquel j'ai déjà fait face (le type de données dans ce cas était varchar je crois). – CodeMonkey1313

+0

Fonctionne bien! Je vous remercie. –

0

Voici une façon:

declare @x xml 

set @x = '<SimpleRuleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
       <EntityId>0</EntityId> 
       <EntityFriendlyName>ALine</EntityFriendlyName> 
      </SimpleRuleValue>' 

select @x.query('data(SimpleRuleValue/EntityFriendlyName)') 
+0

L'utilisation de l'opérateur '//' xpath est généralement très inefficace .... –

+1

@marc_s: Merci pour le conseil. Edited la réponse. –

Questions connexes