2010-10-18 5 views
0

Dans ma table de base de données SQL 2008, j'ai un nom de colonne AUTHOR qui contient des données XML. Le XML est pas bien formé et possède des données comme ci-dessousComment obtenir l'élément XML requis à partir de données XML mal formées dans le serveur SQL

<Author> 
<ID>172-32-1176</ID> 
<LastName>White</LastName> 
<FirstName>Johnson</FirstName> 
<Address> 
<Street>10932 Bigge Rd.</Street> 
<City>Menlo Park</City> 
<State>CA</State> 
</Address> 
</Author> 

Certains XML ont toutes les données ci-dessus et certains ont juste une étiquette.

<ID>172-32-1176</ID> 

Je veux écrire une requête qui me renvoie une colonne en tant qu'identité. J'ai essayé d'utiliser AUTHOR.query ('data (/ Author/ID)') comme identité, mais cela échoue quand XML n'a pas de noeud Auteur.

Merci, Vijay

Répondre

2

Avez-vous essayé quelque chose comme /Author/ID|/ID? c'est-à-dire essayer pour le premier scénario, et sans correspondance, la seconde?

(notez que l'opérateur | est un opérateur union ensemble, comme décrit here)

+0

+1 Bonne réponse. –

+0

Cela a fonctionné :) Merci – user219628

0

Dans le cas qui peut être maintenu rien « certain » sur le XML, sauf qu'un élément ID unique contient la valeur d'identité requise, alors l'expression XPath suivante sélectionne l'élément ID:

//ID 
+0

Cela a fonctionné aussi. Je vous remercie. – user219628

+0

Une chose que vous devriez savoir à propos de cette déclaration est qu'elle ne fonctionne pas très bien. Si vos documents sont volumineux, j'éviterais cela. –

+0

@ Eric-T: Bien sûr - Je le mentionne toujours. C'est pourquoi je dis que cela doit être utilisé seulement "Dans le cas où rien de" certain "ne peut être maintenu sur le XML" –

Questions connexes