2009-01-29 10 views
0

Imaginez le tableau suivant:Comment trouver des lignes dans le tableau SQL où xPath

------------------------------------------------------------- 
    ID | XML 
------------------------------------------------------------- 
    1 | <Form><object ID="1" /></Form> 
    2 | <Form><object ID="2" /></Form> 
    3 | <Form><object ID="2" /></Form> 
------------------------------------------------------------- 

J'ai besoin de SQL pour trouver toutes les lignes où ID et le formulaire/objet @ ID ne sont pas les mêmes

I » m en utilisant SQL2000. ID est un champ int et XML est un champ de texte.

Les données du tableau ci-dessus sont également simplifiées et il y aura des éléments variables supplémentaires à l'intérieur de l'étiquette de formulaire.

Comment faire? Puis-je faire ceci?

+0

SQL2000? Voulez-vous dire Microsoft SQL Server 2000? – phihag

+0

Oui, j'utilise MSSQL2000 –

Répondre

2

Je ne pense pas qu'il y ait une bonne façon de le faire dans SQL2000. Avec SQL2005, vous pouvez utiliser le type de données xml pour extraire la valeur.

Ma suggestion serait le long des lignes de

SELECT * 
FROM TABLE t 
WHERE CHARINDEX('ID="' + CAST(t.ID AS VARCHAR) + '"',t.XML) = 0 

Mais il est méchant et lent.

+0

Je peux m'en passer rapidement. Vous venez de trouver les 11 lignes que je devais trouver parmi les 3439 lignes disponibles ... merci beaucoup. –

0

Vous pouvez essayer Contient dans votre instruction de sélection, mais vous devez vous assurer que votre table est indexée en texte intégral.

noms de Nice sur le terrain par la voie ...

Questions connexes