SQL Server 2008 R2:仅在使用 XQuery (.value) 查询 XML 时获取 NULL

SQL Server 2008 R2: Only get NULL when using XQuery (.value) to query into XML

我的 table 名为 Table_1,有 2 列:

id (int) and myxml (xml)

我在下面附上了我正在使用的 xml 快照。 (这个xml对应id = 1)

我遇到的问题是,在使用 XQuery (.value) 查询此 XML

时,我只会得到 NULL

这是我写的代码:

SELECT myXml.value('(Archivebatch/Cr/Modifcltn/Modif)[2]/@modiftype','int')
 from Table_1 where id = 1

无论我尝试从 xml 中查询什么,我都只会得到 NULL 我也尝试包括没有帮助的命名空间(仍然只有 return NULL)

编辑:我试图通过以下方式包含命名空间:

WITH XMLNAMESPACES ('w3.org/2001/XMLSchema-instance' AS ns) 
select myXml.value(' 
(/ns:Archivebatch/ns:Cr/ns:Modifcltn/ns:Modif)[2]/@modiftype','int') 
from dbo.table_1 where id = 1 

对于此特定查询重要的命名空间是此处定义的默认命名空间:

xmlns="SIMATIC_BATCH_V8_1_0"

所以您应该注册 ns 前缀以指向上述名称空间 URI,或者您可以使用 ;WITH XMLNAMESPACES 注册默认名称空间并省略 xquery 中的前缀,因为它现在已成为默认名称:

;WITH XMLNAMESPACES (DEFAULT 'SIMATIC_BATCH_V8_1_0')
select myXml.value('(/Archivebatch/Cr/Modifcltn/Modif)[2]/@modiftype','int') 
from dbo.table_1 where id = 1