У меня есть таблица со столбцом XML. Xml похож на
<Root>
<Row>
<user>abc</user>
<Rowid>1</Rowid>
</Row>
<Row>
<user>vf</user>
<Rowid>2</Rowid>
</Row>
<Row>
<user>ert</user>
<Rowid>3</Rowid>
</Row>
<Maxrowid>3</Maxrowid>
</Root>
Теперь под запросом возвращаем столбец sl_no и myxmlcolumn строк, содержащих столбец xml со значениями 'abc' или 'xyz' в узле 'user' (). Ниже запроса я использую аналогичную IN-опцию sql.
SELECT
[mytable].[Sl_no],
[mytable].[myxmlcolumn]
FROM [mydb].dbo.[mytable]
WHERE
[myxmlcolumn].exist('for $x in /Root/Row where (($x/user[fn:upper-case(.)=(''ABC'',''XYZ'')])) return $x') > 0
Я хочу, чтобы запрос аналогичного типа выполнялся так же, как и sql NOT IN. То есть в моем случае я хочу, чтобы строки, не имеющие значений 'abc' или 'xyz' в узле 'user' () в столбце xml. Поэтому, пожалуйста, помогите мне в этом.
источник