检查SQL中是否用`xsi:nil`标记了XML元素

时间:2011-12-08 13:45:33

标签: sql-server xml tsql xpath xquery

我正在处理一个粉碎XML文档的存储过程。正在处理的记录中的一个子元素有时可以使用xsi:nil="true"属性进行标记。其他时候,它可以包含dateTime。我正在尝试将一个字符串插入到我的表的列中,这取决于该元素是否具有值。例如:

[Status] = CASE WHEN (Rt.Item.value('(./Date)[1]', 'nvarchar(max)') = '') THEN N'SUBMITTED' ELSE N'PROCESSED' END

不幸的是,这似乎不起作用。检查元素在SQL Server中是否有值的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

<强>一般

theElementName[not(@xsi:nil eq 'true')]/any/other/needed/location/steps

如果未注册"xsi"前缀与相应命名空间的关联(执行此操作的方式是特定于实现的,您需要检查在您的情况下如何执行此操作),可以使用:

theElementName[not(@*[name() eq 'xsi:nil'] eq 'true')]