Il existe un champ dans la table "Contacts" de ma société. Dans cette table, il y a une colonne de type XML. La colonne contient des données diverses sur un contact particulier. PAR EXEMPLE.Interrogation de colonnes XML dans SQLServer 2005
<contact>
<refno>123456</refno>
<special>a piece of custom data</special>
</contact>
Les balises ci-dessous contact
peuvent être différents pour chaque contact, et je dois interroger ces fragments à côté des colonnes de données relationnelles dans la même table.
J'ai utilisé des constructions comme:
SELECT c.id AS ContactID,c.ContactName as ForeName,
c.xmlvaluesn.value('(contact/Ref)[1]', 'VARCHAR(40)') as ref,
INNER JOIN ParticipantContactMap pcm ON c.id=pcm.contactid
AND pcm.participantid=2140
WHERE xmlvaluesn.exist('/contact[Ref = "118985"]') = 1
Cette méthode fonctionne bien, mais il faut un certain temps pour que le serveur réponde. J'ai également étudié en utilisant la fonction nodes() pour analyser les nœuds XML et exist() pour tester si un nœud contient la valeur que je recherche.
Est-ce que quelqu'un sait une meilleure façon de demander des colonnes XML ??
Cela prend du temps, voulez-vous dire que le serveur met du temps à répondre, ou qu'il faut beaucoup d'efforts pour écrire la requête? – Espo
Je veux dire que ça prend trop de temps pour que le serveur revienne avec des résultats – nialljsmith