使用xquery查找所有“null”值

时间:2013-05-21 22:27:07

标签: sql-server xml sql-server-2008-r2 xquery

我的任务是查找<nodeA>为空的所有值。这可能意味着它是NULL,或者它不存在。

我制作了以下查询

SELECT *
FROM table
WHERE AttributeList.value ('(/AttributeList/nodeA)[1]', 'varchar(50)') IS NULL

然而,它仅返回看起来像<AttributeList />

的结果

我很好奇的是,它还会返回一个看起来像

的XML
<AttributeList>
    <nodeA></nodeA>
</AttributeList>

2 个答案:

答案 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如果您想重新定义“空”。