您好我有以下 SQL 来尝试解析 xml 并提取“OrderNumber”。我遇到的问题是这个 xml(我无法控制)有一个奇怪的 xml 命名空间。我只是为了这个例子把它改成了 abc.com,但它是别的东西。无论如何,当存在该命名空间时,T-SQL 在结果中返回空值。所以它不能很好地与命名空间配合使用。如果我手动删除命名空间或通过 T-SQL 进行搜索和替换,它工作得很好。我想我可以做一个搜索和替换,但那个解决方案让我很困扰。想知道是否有其他人现在有更好的解决方法?也许可以解释为什么它不喜欢命名空间?非常感谢一些建议。谢谢!
Declare @Transmission xml
set @Transmission = '<Transmission>
<Requests>
<SubmitOrdersRequest>
<Orders>
<Order xmlns="http://www.abc.com">
<OrderNumber>123</OrderNumber>
</Order>
</Orders>
</SubmitOrdersRequest>
</Requests>
</Transmission>'
select @Transmission.value('(Transmission/Requests/SubmitOrdersRequest/Orders/Order/OrderNumber/text())[1]', 'varchar(100)')