select * from Bookmarkpoi where
poiid =31021 and BPCategoryIds.exist('//BPCategoryId[.=5]') = 1
该sql语句的意思是从数据表Bookmarkpoi中查找数据,过滤条件是poiid列的值为31021,而且BPCategoryIds列(该列的内容是xml文本)中要存在BPCategoryId值为5的节点。
//的意思是查找所有的BPCategoryId节点,不管该节点处于哪一级。
update Bookmarkpoi set
BPCategoryIds.modify('delete (/BPCategoryIds/BPCategoryId[.=5])[1]')
where Poiid = 29786 and Userid = 73411
该sql语句的意思是修改数据表中poiid为29786,userid是73411,而且BPCategoryIds列中有BPCategoryId值为5的节点的列,这样的列可能有多列,[1]的意思就是取所有记录中的第一个,.表示取当前节点,所以BPCategoryId[.=5]的意思就是看看所有子节点中是否有值为5的节点。
示例如下:
1.按节点值查询:
2.插入XML节点:
插入之前:
插入之后: