首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Node属性查询XML节点值

使用Node属性查询XML节点值
EN

Stack Overflow用户
提问于 2013-11-06 00:33:08
回答 1查看 3.6K关注 0票数 1

我试图检索作为xml数据类型存储在sql server列中的xml节点的值。例如,我的xml列数据是:

代码语言:javascript
代码运行次数:0
运行
复制
<fields>
<field id="StudentName">John Smith</field>
<field id="StudentID">1310021003</field>
<field id="SchoolName">Little Kid Elementary School</field>
</fields>

我要拿回StudentID。当我运行下面的脚本时,我会得到null。

代码语言:javascript
代码运行次数:0
运行
复制
select MyColumnName.value('(/fields/field/@StudentID)[1]', 'varchar(20)') as StudentId from MyTable

额外的问题-如果可能的话,我还想通过学生查询表格,例如:select * from MyTable where MyColumnName.value('(/fields/field/@StudentID)[1]', 'varchar(20)') = '1310021003'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-06 06:23:32

首先,这将是测试环境:

代码语言:javascript
代码运行次数:0
运行
复制
declare @MyTable table (MyColumnName xml)

insert into @MyTable 
select '<fields>
<field id="StudentName">John Smith</field>
<field id="StudentID">1310021003</field>
<field id="SchoolName">Little Kid Elementary School</field>
</fields>' union all

select '<fields>
<field id="StudentName">John Smith</field>
<field id="StudentID">2343343434</field>
<field id="SchoolName">Little Kid Elementary School</field>
</fields>'

要从xml中获取数据,请使用value()函数:

代码语言:javascript
代码运行次数:0
运行
复制
select
    MyColumnName.value('(fields/field[@id="StudentID"]/text())[1]', 'nvarchar(max)') as StudentID
from @MyTable

产出:

代码语言:javascript
代码运行次数:0
运行
复制
StudentID
-----------
1310021003
2343343434

若要通过xml数据进行筛选,请使用exist()函数。

代码语言:javascript
代码运行次数:0
运行
复制
select
    *
from @MyTable
where MyColumnName.exist('fields/field[@id="StudentID" and text()=1310021003]') = 1

产出:

代码语言:javascript
代码运行次数:0
运行
复制
MyColumnName
-----------
<fields>
    <field id="StudentName">John Smith</field>
    <field id="StudentID">1310021003</field>
    <field id="SchoolName">Little Kid Elementary School</field>
</fields>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19801867

复制
相关文章

相似问题

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