So finden Sie Zeilen in SQL-Tabelle, wo xPath

Stellen Sie sich die folgende Tabelle vor:

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

Ich brauche etwas SQL, um alle Zeilen zu finden, wo ID und Form / object @ ID nicht gleich sind

Ich verwende SQL2000. ID ist int-Feld und XML ist ein Textfeld.

Auch die data in der obigen Tabelle sind vereinfacht und es werden zusätzliche veränderliche Elemente innerhalb des Formulars geben.

Wie mache ich das? Darf ich das machen?

Ich glaube nicht, dass es einen schönen path gibt, dies in SQL2000 zu tun. Mit SQL2005 können Sie den XML-datatyp verwenden, um den Wert herauszuziehen.

Mein Vorschlag wäre in der Linie von

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

Aber es ist böse und langsam.

Sie können versuchen, Enthält in Ihrer select-statement, aber Sie müssen sicherstellen, dass Ihre Tabelle Volltext indiziert ist.

Nette Feldnamen übrigens …