我在Server中有一些XML:

检索代码:
declare @xmlresponse xml
select top 1 @xmlrespone = xmlresponse from dto.t
;with xmlnamespaces(default 'http://www3')
select inputRefId = Node.Data.Value('.', 'varchar(50)')
from @xmlresponse.nodes('.') Node(Data)这将两个字段(inputrefid和crn)作为一个字符串返回。
我想在以inputrefid开头的单独字段中检索值,但是无论我尝试什么,我都会得到NULL。
e.g
select inputRefId = Node.Data.Value('(/inputRefId)[1]', 'varchar(50)')发布于 2020-06-19 04:02:51
用这个XQuery试试:
;WITH xmlnamespaces('http://www3' AS ns)
SELECT
inputRefId = Data.value('(ns:inputRefId)[1]', 'varchar(50)'),
crn = Data.value('(ns:crn)[1]', 'varchar(50)')
FROM
@xmlresponse.nodes('/resultDTO') Node(Data)关键是您的顶级节点-- <resultDTO>没有http://www3 XML命名空间--因此不能真正将http://www3用作XML中所有节点的默认http://www3名称空间--您需要更加具体,并且只在真正设置了它的地方应用它。
https://stackoverflow.com/questions/62462902
复制相似问题