sql-server - 检查 XML 元素是否在 SQL 中标记为 `xsi:nil`

标签 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 中检查元素是否具有值的正确方法是什么?

最佳答案

一般:

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

如果 "xsi" 前缀与适当命名空间的关联未注册(这样做的方法是特定于实现的,您需要检查如何在您的情况),仍然可以使用:

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

关于sql-server - 检查 XML 元素是否在 SQL 中标记为 `xsi:nil`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431918/

相关文章:

sql - SQL日期时间需要读取00 :00:00. 000

c# - 引用数据表 C# 更新 SQL 表的最佳方法

java - 填充的 RecyclerView 是空的

delphi - TSQLQuery - 查询未返回游标

javascript - 如何持续发送ajax请求直到收到响应?

C# - 检查从 XML 文件创建的列表中是否存在值

powershell - 在通过管道之前对数据进行批处理

sql - 游标和存储过程优化

sql - SQL Where 子句中的大小写切换

mysql - 将 SQL Server SQL 查询转换为 MySQL