2010-04-23 17 views
1

Je souhaite utiliser XQuery sur une colonne de type de données NTEXT (je n'ai pas le choix!). Je l'ai essayé de convertir la colonne XML en utilisant CONVERT mais il donne l'erreur:XML XQUERY Problème avec le type de données NTEXT

Incorrect syntax near the keyword 'CONVERT'. 

Voici la requête

SELECT 
    y.item.value('@UserID', 'varchar(50)') AS UnitID, 
    y.item.value('@ListingID', 'varchar(100)') AS @ListingID 
FROM 
    dbo.KB_XMod_Modules 
    CROSS APPLY  
    CONVERT(xml, instancedata).nodes('//instance') AS y(item) 

(instanceData est ma colonne)

Quelqu'un peut-il penser à un travail autour pour ça ?

Merci

Répondre

0

Il semble que ni CONVERT ni CAST(... AS XML) travail.

Le truc XQuery ne fonctionne vraiment que sur les colonnes XML - désolé.

Cependant: peut-être il y a une voie d'évacuation :-)

Vous pouvez faire une des deux choses:

  • ajouter une colonne calculée persistante de type XML à votre table et partie à cette nouvelle colonne

ou - si vous ne pouvez pas changer la structure de la table -

  • créer une vue sur la table et comprennent une colonne XML casted-

donc pour la solution # 1 que vous feriez:

ALTER TABLE KB_XMod_Modules 
    ADD XmlCol AS CAST(instancedata AS XML) PERSISTED 

et pour la solution n ° 2, vous pouvez utiliser:

CREATE VIEW KBwithXML AS 
    SELECT instancedata, CAST(instancedata AS XML) 'XmlCol' 
    FROM KB_XMod_Modules 

Dans les deux cas, vous avez maintenant une XmlCol de type XML disponible, que vous pouvez interroger avec XQuery pour le plus grand plaisir de votre coeur!