XML类型的基本查询使用
2015-10-29 10:47
232 查看
创建表:
create table DevRec(DevID varchar(10),XMLData xml)插入数据:
insert into DevRec(DevID,XMLData)select '轴承D','<天气><温度>53</温度><压力>12</压力><流量>3</流量></天气>'
union
select '轴承E','<天气><温度>53</温度><压力>12</压力><流量>7</流量></天气>'
union
select '轴承F','<天气><温度>51</温度><压力>10</压力><流量>5</流量></天气>'
1、query方法:
query方法可用于查询指定元素的XML文档表示。SELECT XMLData.query('压力')
FROM DevRec
2、value方法:
value方法为开发人员提供了直接访问XML文档中元素或属性值的途径。利用该方法,可以在复杂的XML文档中直接获取指定元素或属性的值(即直接获取XML文档中某节点的值)value方法将直接返回一个标量值。value方法的语法如下所示:value(query_express, SQLType)
其中query_express为欲查询的XML文档节点或节点属性的表达式。
select Devid,XMLData.value('/温度[1]','varchar(5)') as 温度,
XMLData.value('/压力[1]','varchar(5)') as 压力,
XMLData.value('/流量[1]','varchar(5)') as 流量
from DevRec
where XMLData.value('/温度[1]','varchar(5)') = '53'
and XMLData.value('/压力[1]','varchar(5)') = '12'
3、nodes方法:
采用XML数据类型的nodes方法可以轻松地将一个XML数据类型的实例(例如,一个XML变量或字段)转换为一组相互联系的数据,即数据集。换言之,使用node()方法可以将XML中的某组元素转换为一组数据集中的记录。nodes方法使用语法如下所示:Nodes (XQuery) AS Table(Column)
从其语法形式上可以很容易地看出,Nodes方法可以将一个XML文档转换为表Table中的相应列(字段)。
DECLARE @data AS XML
SELECT @data = XMLData FROM dbo.DevRec
WHERE DevID = '轴承E'
SELECT XMLData.value('(/天气/温度)[1]','Float') 温度
FROM @data.nodes('/天气/温度')
AS tempdb(XMLData)
4、exist方法:
显然,exist方法是一个用于判断指定XML型结果集中是否存在指定节点的方法。该方法返回的结果包括两种值,即1(当XML型结果集中至少包含一个查询节点时)或0(当XML型查询集中没有包含指定节点时)。该方法的使用语法如下所示:
exist(‘XQeuryExpression’)
其中XQeuryExpression代表指定的XML型查询语句,该查询语句将生成一组XML型结果集。
SELECT DevID,
XMLData.exist('/天气/温度') AS 是否存在温度节点,
XMLData.exist('/天气/压力') AS 是否存在压力节点,
XMLData.exist('/温度/压力') AS 温度节点下是否存在压力节点
FROM dbo.DevRec
相关文章推荐
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- PowerShell实现查询打开某个文件的默认应用程序
- 推荐Sql server一些常见性能问题的解决方法
- C#针对xml基本操作及保存配置文件应用实例
- asp下查询xml的实现代码
- SQL语句实现查询SQL Server服务器名称和IP地址
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- SQL Server存储过程的基础说明
- SQL多表连接查询实例分析(详细图文)
- 有关数据库SQL递归查询在不同数据库中的实现方法
- EBS xml publisher中文乱码问题及解决办法
- sql 多表连接查询
- SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例
- C# linq查询之动态OrderBy用法实例
- 简单按日期查询mysql某张表中的记录数