从SQL XML格式返回XML

这是我的查询:

select EmployeeName, EmployeeSalary from Employee2 for xml path('EmployeeDetails')

回报

<EmployeeDetails> <EmployeeName>xxxxx</EmployeeName> <EmployeeSalary>5000.00000</EmployeeSalary> </EmployeeDetails>

我怎样才能输出

<EmployeeDetails> <EmployeeName = xxxxx /> <EmployeeSalary = 5000.00000/> </EmployeeDetails>

--------------解决方案-------------

你应该看看FOR XML显式。 例如,因此使用下面的架构:

Create Table #Employees
(
Id int not null identity(1,1) primary key clustered
, EmployeeName nvarchar(100) not null
, EmployeeSalary decimal(18,4) not null
)

Insert #Employees Values( 'ABC', 12345 )
Insert #Employees Values( 'DEF', 67890 )
Insert #Employees Values( 'GHI', 11223 )

而下面的查询:

Select 1 As Tag
, Null As Parent
, Id As [EmployeeDetails!1!Id!Hide]
, Null As [EmployeeName!2!Name]
, Null As [EmployeeSalary!3!Salary]
From #Employees
Union All
Select 2 As Tag
, 1 As Parent
, Id
, EmployeeName
, Null
From #Employees
Union All
Select 3 As Tag
, 1 As Parent
, Id
, Null
, EmployeeSalary
From #Employees As EmployeeDetails
Order By [EmployeeDetails!1!Id!Hide]
For Xml Explicit

我得到这是接近的情况如下:

<EmployeeDetails>
<EmployeeName Name="ABC"/>
<EmployeeSalary Salary="12345.0000"/>
</EmployeeDetails>
<EmployeeDetails>
<EmployeeName Name="DEF"/>
<EmployeeSalary Salary="67890.0000"/>
</EmployeeDetails>
<EmployeeDetails>
<EmployeeName Name="GHI"/>
<EmployeeSalary Salary="11223.0000"/>
</EmployeeDetails>

你不能,那不是有效的XML

如果你想要像

<EmployeeDetails Name="xxxxx" Salary="5000.00000" />

然后可以做,但差别不大。 XML是XML。 诀窍是AUTO关键字

select EmployeeName, EmployeeSalary from Employee2
for xml AUTO

如果你想精确控制XML布局中使用这种垃圾

Select
(Select EmployeeName, EmployeeSalary From Employee2 For XML Auto, Type)
.query(
'<Slaves>{
for $employee in /Employee2
return
<Slave Name="{data($employee/@EmployeeName)}" Salary="{data($employee/@EmployeeSalary)}"/>
}</Slaves>'
)

SQL Server是不是真的对XML序列化的地方。 你肯定在另一个​​组件,你不应该这样做呢? 通常情况下你的公共接口(UI,API等)

分类:SQL 时间:2012-01-01 人气:33
本文关键词: SQL,SQL服务器,XML,TSQL
分享到:

相关文章

  • 什么是检查SQL Server服务器的可用性最快的方法是什么? 2012-04-22

    我已经在多个地点使用MS Access程序. 它连接到MS SQL Server表,但服务器名是在每个位置不同. 我要找来测试服务器的存在,以最快的方式. 我目前使用看起来像这样的代码: ShellWait "sc \\" & ServerName & " qdescription MSSQLSERVER > " & Qt(fn) FNum = FreeFile() Open fn For Input As #FNum Line Inp

  • SQL Server的XML:按摩XML格式SQL外部或SQL存储过程中? 2012-05-17

    我已经通过与SQL XML输出​​的帖子已经处理了一些优秀的反应看,虽然我需要的可能不是一个),最好是一个存储过程中做一个存储过程中和b)是不可能的. 我的问题是这样的: 我有一个简单的表; COL1,COL2,COL3,COL4.对于一个例子的目的,他们都只是VARCHAR字段. 我试图让那些列了为XML特定格式的方式. 一个岗位看上去很相似,我需要使用FOR XML PATH语句..它有: FOR XML PATH('cell'), ROOT('rows') 虽然这当然看起来完全正确的,但我

  • SQL 2008的XML存储 2012-06-26

    我们进口从我们的客户数据转化为我们的中央服务器进行报告. 我们使用安装在发送从应用程序到WCF服务作为XML提取数据的客户机与.NET 2的窗口服务. 我们不能去上面的.Net 2上的客户端Windows服务. 我们存储在SQL Server表的XML,XML列. 然后我们擦洗数据并将其插入到所需的表. 然而,XML使用是相当大的数据源中的列名. 因此,这已经取得了相当的XML楚其. 目前,我们正在使用的列名节点名和列数据作为节点值. 此结果在列名被用作打开和关闭标记. 我们想到了使用XML的属

  • SQL,PL-SQL和T-SQL之间的区别是什么? 2012-10-16

    SQL,PL-SQL和T-SQL之间的区别是什么? 谁能解释一下这三者之间的差异,并提供场景,每个会贴切使用? --------------解决方案------------- SQL是一种查询语言的集合操作. 这或多或少规范,使用的几乎所有的关系数据库管理系统:SQL服务器,Oracle,MySQL和PostgreSQL,DB2,Informix的等等. PL/SQL是由Oracle专有的过程语言 PL/pgSQL是使用PostgreSQL的过程语言 TSQL是在SQL Server中使用微软专

  • 使用SQL Server“FOR XML”:转换结果的数据类型为文本/ VARCHAR /串什么? 2013-01-22

    我与这近1周挣扎,现在,仍然没有找到任何解决办法-.- 我的目标是通过与"FOR XML"语句查询,服用此XML作为字符串/流转发到XSLT转换,并呈现结果作为HTML来接收从SQL Server的XML. 关于它的可怜的东西是Web服务器环境中应该使用:IBM的Domino 8.5.2,它通常使用Lotus脚本和Lotus Notes数据库生成的网站. 但现在Notes数据库的性能已经达到了穷途末路,在谈论大的数据库时,就像我们的网站打而存储数百万点击率的数据集的统计数据. 因此,我

  • 微软SQL分析服务器 2013-07-29

    我怎样才能retrive微软SQL分析服务器属性使用SQL查询? 谢谢 --------------解决方案------------- Analysis Services不使用SQL查询. 它使用MDX. 属性存储在XML文件中. 您可以运行PowerShell脚本来获取信息. 这里是一个管理单元,以使SSAS查询PowerShell中 - http://powerssas.codeplex.com/

  • 难道LINQ实体与内部对象上下文实例表达式转换成SQL客户端 - 服务器请求的顺序? 2013-12-07

    我有一个ADO.NET EF表达式: db.Table1.Select( x => new { ..., count = db.Table2.Count(y => y.ForeignKey.ID == x.ID) }) 请问我理解正确的话它翻译成几种SQL客户端 - 服务器请求和可重构获得更好的性能? 先感谢您! --------------解决方案------------- 是 - 表达式将得到翻译(中它可以最好的方式),以一个SQL查询. 而且就像任何T-SQL查询中,EF(或L2SQL)

  • 得到一个数据集从SQL Express服务器C# 2013-12-14

    我怎样才能从使用C#中的SQL Express服务器中的所有数据一个数据集? 谢谢 编辑:为了澄清,我也想从每个表中的所有数据. 这样做的原因是,它是一个相对小的数据库. 以前我一直在使用存储数据集的能力,在所有三个表中的XML文件. 不过,我想将其迁移到一个数据库. --------------解决方案------------- 您可以使用GetSchema方法把所有的数据库中的表,然后使用数据适配器来填充数据集. 事情是这样的(我不知道,如果它编译,我只是贴一些代码,修改一点点): DbPr

  • SQL选择FOR XML到Solr的文档 2014-03-04

    我试图得到一个SQL SELECT语句生成XML这符合Solr的标准. 定像一个表: id | name --------- 1 | one 2 | two 3 | three 我需要的结果是一样(有或无根节点): <add> <doc> <field name="id">1</field> <field name="name">one</field> </doc> <doc&

  • 大小限制在SQL 2005的XML数据类型 2014-08-07

    有没有在SQL 2005的XML数据类型的大小限制? 当我尝试从我的存储过程返回任何东西比XML字符串44KB大小,它只是返回一个空字符串. 我使用FOR XML PATH返回分层数据集以XML格式从我的存储的特效. --------------解决方案------------- 这是2GB的XML数据类型. 你只得到在SSMS或在您的客户端代码的44K? SSMS限制下Tools..Options..Query结果LOB数据类型 编辑,评论后: SSMS可能已经更改了该值回来,如果你再进入选项

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.487 (s). 11 q(s)