Как найти строки в таблице SQL, где xPath - PullRequest
0 голосов
/ 29 января 2009

Представьте себе следующую таблицу:

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

Мне нужен SQL, чтобы найти все строки, в которых ID и Form / object @ ID не совпадают

Я использую SQL2000. ID - это поле int, а XML - это текстовое поле.

Кроме того, данные в приведенной выше таблице упрощены, и внутри тега формы будут добавлены дополнительные переменные элементы.

Как мне это сделать? Могу ли я сделать это?

Ответы [ 2 ]

2 голосов
/ 29 января 2009

Я не думаю, что есть хороший способ сделать это в SQL2000. В SQL2005 вы можете использовать тип данных xml для извлечения значения.

Мое предложение было бы в духе

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

Но это противно и медленно.

0 голосов
/ 29 января 2009

Вы можете попробовать Содержит в своем операторе выбора, но вам нужно убедиться, что ваша таблица полнотекстовая индексирована.

Кстати, хорошие имена полей ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...