首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索XML数据的SQL查询

检索XML数据的SQL查询
EN

Stack Overflow用户
提问于 2020-06-19 03:43:10
回答 1查看 81关注 0票数 1

我在Server中有一些XML:

检索代码:

代码语言:javascript
复制
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)

这将两个字段(inputrefidcrn)作为一个字符串返回。

我想在以inputrefid开头的单独字段中检索值,但是无论我尝试什么,我都会得到NULL。

e.g

代码语言:javascript
复制
select inputRefId = Node.Data.Value('(/inputRefId)[1]', 'varchar(50)')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 04:02:51

用这个XQuery试试:

代码语言:javascript
复制
;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名称空间--您需要更加具体,并且只在真正设置了它的地方应用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62462902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档