sql 和xml

一·常用基本功能

表结果:

1.

 1 <row>
 2   <ID>1035</ID>
 3   <Rate>6.12</Rate>
 4   <Date>2013-11-28</Date>
 5   <Remark>正常</Remark>
 6 </row>
 7 <row>
 8   <ID>1036</ID>
 9   <Rate>6.15</Rate>
10   <Date>2013-11-28</Date>
11   <Remark>正常</Remark>
12 </row>

1 SELECT *
2 FROM dbo.T_H_ExchangeRate
3 FOR XML PATH

2.

1 <ID>1035</ID>
2 <Rate>6.12</Rate>
3 <Date>2013-11-28</Date>
4 <Remark>正常</Remark>
5 <ID>1036</ID>
6 <Rate>6.15</Rate>
7 <Date>2013-11-28</Date>
8 <Remark>正常</Remark>

1 SELECT *
2 FROM dbo.T_H_ExchangeRate
3 FOR XML PATH(‘‘)

3.

<SUN>
  <ID>1035</ID>
  <Rate>6.12</Rate>
  <Date>2013-11-28</Date>
  <Remark>正常</Remark>
</SUN>
<SUN>
  <ID>1036</ID>
  <Rate>6.15</Rate>
  <Date>2013-11-28</Date>
  <Remark>正常</Remark>
</SUN>

SELECT *
FROM dbo.T_H_ExchangeRate
FOR XML PATH(‘SUN‘)

4.

<汉语>
  <序号>1035</序号>
  <汇率>6.12</汇率>
  <日期>2013-11-28</日期>
  <标记>正常</标记>
</汉语>
<汉语>
  <序号>1036</序号>
  <汇率>6.15</汇率>
  <日期>2013-11-28</日期>
  <标记>正常</标记>
</汉语>

SELECT ID AS ‘序号‘,
       Rate AS ‘汇率‘,
       Date AS ‘日期‘,
       Remark AS ‘标记‘
FROM dbo.T_H_ExchangeRate
FOR XML PATH(‘汉语‘)

5.

--生成带顶层节点<Table>
  <Row>
    <ID>1035</ID>
    <Rate>6.12</Rate>
    <Date>2013-11-28</Date>
    <Remark>正常</Remark>
  </Row>
  <Row>
    <ID>1036</ID>
    <Rate>6.15</Rate>
    <Date>2013-11-28</Date>
    <Remark>正常</Remark>
  </Row>
</Table>

SELECT *
FROM dbo.T_H_ExchangeRate
FOR XML PATH(‘Row‘),ROOT(‘Table‘)

--还原成DataTable的形式,查找节点
SELECT T.x.value(‘(ID)[1]‘,‘nvarchar(50)‘) AS ID,
       T.x.value(‘(Rate)[1]‘,‘nvarchar(50)‘) AS Rate,
       T.x.value(‘(Date)[1]‘,‘nvarchar(50)‘) AS Date,
       T.x.value(‘(Remark)[1]‘,‘nvarchar(50)‘) AS Remark
FROM @xmlStr.nodes(‘/Table/Row‘) T(x)

6.

[正常],[正常],
SELECT ‘[‘+Remark+‘],‘
FROM dbo.T_H_ExchangeRate
FOR XML PATH(‘‘)

7.

数据源:

查询结果:

--源代码SELECT C.O_USER, LEFT(C.Operate,LEN(Operate)-1) Operate
FROM (
SELECT A.O_USER,
       (
          SELECT B.O_TYPE+‘,‘
          FROM dbo.T_UP_Olog AS B
          WHERE B.O_USER = A.O_USER
          FOR XML PATH(‘‘)
       ) Operate
FROM dbo.T_UP_Olog A
GROUP BY A.O_USER
)AS C

时间: 08-19

sql 和xml的相关文章

sql FOR XML PATH(&#39;&#39;)

alter function test() Returns nvarchar(max) As Begin Declare @avg nvarchar(max) Declare @str nvarchar(max) Set @str=( Select ','+yuanshidanhao from Aj_Jibenxinxi Where convert(nvarchar(max),id) in (1,2,6) FOR XML PATH('') ) Return @str End sql FOR XM

Oracle使用Sql把XML解析成表(Table)的方法

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0" encoding="gb2312" ?> <DEAL_BASIC> <USER_DEAL_INFO> <USER_DEAL_ID>1000100001</USER_DEAL_ID> <DEAL_INURE_TIME>

Sql Server xml 类型字段的增删改查

1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需要写sql更新或插入. DECLARE @xml XML SET @xml=' <MyHobby> <MyCode>1</MyCode> <MyName>爬山</MyName> </MyHobby> <MyHobby> <

sql for xml 另一种写法(采用 tag 与 union all,简洁易懂)

测试环境:sql 08, 08 R2, 2010,  2012, 2014 等 declare @agent table ( AgentID int, Fname varchar(5), SSN varchar(11) ) insert into @agent select 1, 'Vimal', '123-23-4521' union all select 2, 'Jacob', '321-52-4562' union all select 3, 'Tom', '252-52-4563' de

将SQL for xml path(&#39;&#39;)中转义的字符正常显示

将SQL for xml path('')中转义的字符正常显示 在工作中出现的发送邮件的时候:因为邮件内容中有链接,并且多个拼接在一起的,于是用了for xml path().        但是,这样显示出来的链接时会将路径中的<,>,&符号转义为< > & 这样显示的路径在邮件中是不能进行链接的.         在网上查了很多资料后终于找到了一种方法:...FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)') 如下

SQL对Xml字段的操作

原文:SQL对Xml字段的操作 T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中.

SQL FOR XML

原文:SQL FOR XML 摘要:sql中的for xml语法为表转化为xml提供了很好的支持,当然使用同样的程序语言也能够达到同样的效果,但是有了for xml将使得这一切更加的方便. 主要内容: Select 的查询结果会作为行集返回,但是你同样可以在sql中指定for xml子句使得查询作为xml来检索.在for xml子句中,可以指定以下模式之一:RAW .AUTO.EXPLICIT和PATH. RAW模式返回行为元素,每一列的值作为元素的属性:AUTO模式返回表名为节点的元素,每一列

sql for xml 拼接相同类的列数据

数据库中记录着员工的工作经历,一个经历一条数据,现有一个需求要Excel导出员工的工作经历,所以就得把工作经历拼接在一起 测试的数据表如下 需要处理得到的结果如下(多个经历用了逗号隔开): SQL语句: SELECT empID, LEFT(workExperience,LEN(workExperience)-1) AS workExperience FROM ( SELECT empID,(SELECT Experience++',' FROM dbo.Employee WHERE empID

SQL - for xml path(&#39;&#39;) 实现多行合并到一行, 并带有分隔符

docs.microsoft.com 链接:  SQL一个应用场景与FOR XML PATH应用 首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下: 这时,我们的要求是查询学生表,显示所有学生的爱好的结果集,代码如下: SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM ( SELECT sName, (SELE

SQL FOR XML PATH 和 Stuff 用法

sql stuff 用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,character_expression ) 3.示例 以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串 SELECT STUFF('abcdef', 2, 3, 'ijklmn')GO 下面是结果集 a