Ich habe eine Tabelle mit einer XML-Spalte. Xml ist ähnlich wie
<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>
Jetzt unter der Abfrage geben Sie die Spalte sl_no und die Spalte myxml mit Zeilen zurück, die die XML-Spalte mit den Werten 'abc' oder 'xyz' im Knoten 'user' () enthalten. Unter der Abfrage verwende ich eine ähnliche IN-Option wie 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
Ich möchte eine ähnliche Art von Abfrage, die genauso funktioniert wie SQL 'NOT IN'. Das heißt, in meinem Fall möchte ich Zeilen ohne Werte 'abc' oder 'xyz' im Knoten 'user' () in der XML-Spalte. Bitte helfen Sie mir dabei.
quelle