我的任务是查找<nodeA>
为空的所有值。这可能意味着它是NULL,或者它不存在。
我制作了以下查询
SELECT *
FROM table
WHERE AttributeList.value ('(/AttributeList/nodeA)[1]', 'varchar(50)') IS NULL
然而,它仅返回看起来像<AttributeList />
我很好奇的是,它还会返回一个看起来像
的XML<AttributeList>
<nodeA></nodeA>
</AttributeList>
答案 0 :(得分:1)
无需从XML中提取值。请改用exist。
select *
from YourTable
where AttributeList.exist('/AttributeList/nodeA/node()') = 0
答案 1 :(得分:0)
使用fn:empty(...)
检查是否有孩子。如果需要,请记住处理属性和其他节点(元素,文本节点......)。
//*[empty( (./node(), ./attribute()) )]
W3schools.com has a nice overview on axis steps如果您想重新定义“空”。