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

Jus*_*tch 3 xml t-sql sql-server xpath xquery

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

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

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

Dim*_*hev 5

一般:

theElementName[not(@xsi:nil eq 'true')]/any/other/needed/location/steps
Run Code Online (Sandbox Code Playgroud)

如果公会"xsi"前缀适当的名称空间未注册(做,这是实现特定的方式,你需要检查这是怎么在你的情况做),人们仍然可以使用:

theElementName[not(@*[name() eq 'xsi:nil'] eq 'true')]
Run Code Online (Sandbox Code Playgroud)