SQL 里解析 XML 格式 字段 信息

DECLARE @ItemMessage XML
DECLARE @ItemTable TABLE(No NVARCHAR(300),zje NVARCHAR(300),yfje NVARCHAR(300),bcje NVARCHAR(300),URL NVARCHAR(300),Remark NVARCHAR(300))
SET @ItemMessage=N‘<List>
 <item>

 <No>SM-JG-201303-0189</No>

  <zje>273,240</zje>

  <yfje>81,972</yfje>

 <bcje>134620</bcje>

  <URL>http://eipwf.aspirehld.com/Workflow/Page/SYS_HTPS/WF_HTPS/HT_HTPS_Default.aspx?MID=163755&amp;SID=3&amp;PID=310284</URL>

  <Remark />
 </item>
</List>‘
INSERT INTO @ItemTable
(
No,
zje,
yfje,
bcje,
URL,
Remark
)
SELECT T.c.value(‘(No/text())[1]‘,‘NVARCHAR(300)‘),
T.c.value(‘(zje/text())[1]‘,‘NVARCHAR(300)‘) ,
T.c.value(‘(yfje/text())[1]‘,‘NVARCHAR(300)‘) ,
T.c.value(‘(bcje/text())[1]‘,‘NVARCHAR(300)‘) ,
T.c.value(‘(URL/text())[1]‘,‘NVARCHAR(300)‘),
T.c.value(‘(Remark/text())[1]‘,‘NVARCHAR(300)‘)
FROM @ItemMessage.nodes(‘/List/item‘) AS T(c)
SELECT * FROM @ItemTable

上面的内容是在网上找到的一个,具体的含义是 先定义一个XML格式的ItemMessage,在解析的时候,先去除节点List和item,然后获取内部的节点字段,最后把这个插入一个临时的ItemTable里。

这是网上给的方法,到了具体使用的时候,我们可能并不是这么使用,现在提供一种简单的使用方式,假设我现在表里的字段XmlData存储的就是ItemMessage样式的内容,首先通过cast命令将XmlData转换成XML类型的格式,然后通过它的Value属性进行分解,可以看到和上面的差不多,/List/item/No为逐层分级,最后的as No是给这个获取到的字段付了一个名字。

cast(XmlData as XML).value(‘(/List/item/No/text())[1]‘,‘NVARCHAR(300)‘) as No

通过上面的这句话就可以很容易的解析出需要的内容了,解析的结果为

SM-JG-201303-0189

附:昨天领导让导数据,写的SQL,做个备份
select a.EBILLNO,
a.EMPNAME,
a.APPLYDATE,
b.HS_NAME,
replace(replace(a.SUMMARY,char(10), ‘‘),char(13),‘‘),
cast(c.XmlData as XML).value(‘(/List/item/No/text())[1]‘,‘NVARCHAR(300)‘) as No,
cast(c.XmlData as XML).value(‘(/List/item/zje/text())[1]‘,‘NVARCHAR(300)‘) as zje,
cast(c.XmlData as XML).value(‘(/List/item/yfje/text())[1]‘,‘NVARCHAR(300)‘) as yfje,
cast(c.XMLData as XML).value(‘(/List/item/bcje/text())[1]‘,‘NVARCHAR(300)‘) as bcje,
cast(c.XMLData as XML).value(‘(/List/item/URL/text())[1]‘,‘NVARCHAR(300)‘) as URL,
cast(c.XMLData as XML).value(‘(/List/item/Remark/text())[1]‘,‘NVARCHAR(300)‘) as BZ,
cast(d.XMLData as XML).value(‘(/List/item/SKRXM/text())[1]‘,‘NVARCHAR(300)‘) as SKRXM,
(‘http://……?sid=3&mid=7281&PID=‘+a.PID) as bxdljdz
from Ex_Bill as a
left join Ex_System_Cfg as b on(a.BILLSYSTEMID=b.HS_ID and a.DATASYSTEMID=b.SYSTEM_NAME)
left join (select * from [192.168.3.23].Flow.dbo.RepeaingTable) as c on (c.Keyword=‘URL‘ and c.ProcessID=a.PID)
left join (select * from [192.168.3.23].Flow.dbo.RepeaingTable) as d on (d.Keyword=‘FKXX_New‘ and d.ProcessID=a.PID or d.Keyword=‘FKXX‘ and d.ProcessID=a.PID)

where applyempid=‘zhongxun‘ and a.EBILLNO is not null
and status>5 and status not in(200,100,7000)
and a.APPLYDATE>‘2011-01-01‘
and a.HT=‘是‘
order by a.ID desc
replace(replace(a.SUMMARY,char(10), ‘‘),char(13),‘‘)

这句话的意思是去除a.SUMMARY里的换行,刚开始并没有加replace这个命令,后来导出Excel后,发现有换行,因此加入了这个命令。

select * from [192.168.3.23].Flow.dbo.RepeaingTable

没有直接写表名,而加入了地址,是因为要联合查询的表不在同一个服务器下,查询多个服务器上的数据要先进行链接服务器的操作,这样才可以联合查询多个服务器。

链接服务器的方法是:先登录一个数据库的服务器,在Microsoft SQL Server Management Studio左侧的对象资源管理器里找到“服务器对象---链接服务器”,右键新建链接服务器。

SQL 里解析 XML 格式 字段 信息

时间: 2024-09-30 20:08:29

SQL 里解析 XML 格式 字段 信息的相关文章

Android之解析XML格式数据

作用:在网络上传输数据时最常用的格式有两种,XML 和 JSON.解析XML格式数据获得与后台交互的信息. 种类: 3种:Pull 解析方式:SAX 解析方式:DOM解析方式. 1.使用Pull解析器解析XML文档Pull解析器的运行方式和SAX解析器很相似,它提供了类似的事件,比如文档开始.文档结束.开始元素和结束元素等.使用parser.next()方法可以进入下一个元素并触发相应的事件.各种事件均已数字的形式被发送,因此可以在程序中使用一个switch语句来对事件进行选择,然后进行相应的事

iOS开发之解析XML格式数据

XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用Swift. 首先自己写一个简单的XML: <data> <person age="15">zhangsan</person> <person age="2">lisi</person> <person&

XStream解析xml格式的字符串的方法

ProcessStatusUploadRootList processStatusUploadRootList = null; try { XStream xStream = new XStream(); xStream.alias("Root", ProcessStatusUploadRootList.class); xStream.alias("Header", ProcessStatusUploadHeader.class); xStream.alias(&q

PHP解析XML格式文档

<?php// 首先要建一个DOMDocument对象$xml = new DOMDocument();// 加载Xml文件$xml->load("3.xml");// 获取所有的post标签$postDom = $xml->getElementsByTagName("PROPERTIES");print_r($postDom);echo '<br>';// 循环遍历post标签    foreach($postDom as $post

使用第三方DOM解析XML格式文件

在解析XML格式文件的时候,使用SAX解析需要实现好多代理方法,比较难记,也容易出错,现在介绍一种由Google推出的第三方DOM(Document Object Model)来解析XML文件. 首先将该第三方文件拖到工程中.谷歌下载地址:https://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ (注:由于该三方是很久之前的版本,还是基于MRC格式下的代码,所以需要改成ARC兼

使用原生AJAX和PHP 构建和解析XML格式的数据

XML:eXtensible Markup Language,可扩展的标签语言,本身是一种字符串格式,用于描述批量复合数据, 语法特点:  (1)所有的数据放在标签中 (2)整个XML字符串有且只能有一个根标签 (3)所有的标签名都可以自定义,但严格区分大小写,且开始和结束标记必须完全一样 (4)每个标签都可以自定义属性,属性必须有值,值必须用单引号/双引号括起来 (5)每个标签都可以定义任意的子标签,标签可以嵌套,但不能交叉 注意:HTML和XML的区别 HTML语法随意:XML语法严格: H

SQL 存储过程 解析XML

第一种说明: 我看过这样一篇文章,如下 在SQL   Server2005中,微软延续了   2000中一个特性(即支持XML类型的数据),并加强了对XML   数据列.XML变量以及XML索引的支持. 在数据库中存储XML数据是一个很出色的特征.对于大部分的数据处理需求来讲,将XML数据格式化为其它关联数据是十分重要.这也是引入OPENXML函 数的原因.OPENXML是一个SQL   Server提供的函数,它的作用是接收XML数据,提供内存中   XML数据的行集视图. 一个OPENXML

自个倒腾的解析XML格式字符串的类【具备一定的通用性】

在公司写了很多解析xml字符串的代码,之前都是不同的结构都是写一段这个结构的DOM操作的代码来获取数据.写了几十个,每个几十行代码,又烦! 一直想写一个比较通用一点的类,这几天有了一点想法,直接上代码了!没有考虑兼容性,也没有在项目中使用,就当作工作总结了,欢迎大家提意见. <!DOCTYPE HTML> <head> <meta charset="utf-8"> <title>适用的xml字符串解析</title> <

dom4解析xml格式文件实例

最近,一哥们在他们公司搞大数据时遇到一份比较棘手的xml文件,需要进行巧妙合理的解析,然后将数据进行封装和保存,由于文件比较大,数据比较多,格式稍微复杂一点,所以我帮他解决,刚拿到文件也觉得无从下手,因为文件中的数据格式确实有点复杂.以下给4种常见的xml文件的解析方式的分析对比: DOM DOM4J JDOM SAX 解析XML文件的几种方式和区别答: Dom解析 在内存中创建一个DOM树,该结构通常需要加载整个文档然后才能做工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的,