これは私のテーブルです
BasketId(int) BasketName(varchar) BasketFruits(xml)
1 Gold <FRUITS><FID>1</FID><FID>2</FID><FID>3</FID><FID>4</FID><FID>5</FID><FID>6</FID></FRUITS>
2 Silver <FRUITS><FID>1</FID><FID>2</FID><FID>3</FID><FID>4</FID></FRUITS>
3 Bronze <FRUITS><FID>3</FID><FID>4</FID><FID>5</FID></FRUITS>
この場合、ゴールドとシルバーFID
を取得できるように、値が 1 と 3 のバスケットを検索する必要があります。
このコードを使用して1のような SINGLE FID 値を検索できる結果に到達しましたが:
declare @fruitId varchar(10);
set @fruitId=1;
select * from Baskets
WHERE BasketFruits.exist('//FID/text()[contains(.,sql:variable("@fruitId"))]') = 1
T-SQL だったら、このようにIN 句を使用していたでしょう
SELECT * FROM Baskets where FID in (1,3)
ヘルプ/回避策をいただければ幸いです...