当前位置:首页 > 分享 > 正文内容

SQL SERVER 如何读取类型为XML的字段

访客3年前 (2022-09-18)分享65

SQL SERVER 读取XML类型字段的方式。

操作方法

  • 01

    先创建一个测试的临时表:--    测试数据--    DROP TABLE #XMLTabCREATE TABLE #XMLTab(colxml XML)INSERT INTO #XMLTab SELECT N'<Record id="1629">  <Exception type="RING_BUFFER_EXCEPTION">    <Task address="0x0062B8E8" />    <Error>9003</Error>    <Severity>error</Severity>  </Exception>  <Exception type="BUFFER_EXCEPTION">    <Task address="0xC452BB39" />    <Error>8008</Error>    <Severity>true</Severity>  </Exception></Record>'INSERT INTO #XMLTab SELECT N'<Record id="1611">  <Exception type="RING_BUFFER_EXCEPTION">    <Task address="" />    <Error>7803</Error>    <Severity>false</Severity>  </Exception>  <Exception type="BUFFER">    <Task address="0xC4445674" />    <Error>4300</Error>    <Severity>right</Severity>  </Exception></Record>'SELECT colxml FROM #XMLTab

  • 02

    读取XML字段方法有两种,方法一:SELECTCONVERT(NVARCHAR(50),colxml.query('data(/Record/@id)')) AS [id],CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/@type)[1]')) AS [type1],CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/Task/@address)[1]')) AS [address1],colxml.value('data(/Record/Exception/Error)[1]','varchar(max)') AS [Error1],colxml.value('data(/Record/Exception/Severity)[1]','varchar(10)') AS [Severity1],CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/@type)[2]')) AS [type2],CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/Task/@address)[2]')) AS [address2],colxml.value('data(/Record/Exception/Error)[2]','varchar(MAX)') AS [Error2],colxml.value('data(/Record/Exception/Severity)[2]','varchar(10)') AS [Severity2]FROM #XMLTab

  • 03

    方法二:SELECTnode.c1.value('(@id)[1]','VARCHAR(50)') AS [id],node.c1.value('(Exception/@type)[1]','VARCHAR(50)') AS [type1],node.c1.value('(Exception/Task/@address)[1]','VARCHAR(50)') AS [address1],node.c1.value('(Exception/Error)[1]','VARCHAR(max)') AS [Error1],node.c1.value('(Exception/Severity)[1]','VARCHAR(max)') AS [Severity1],node.c1.value('(Exception/@type)[2]','VARCHAR(50)') AS [type2],node.c1.value('(Exception/Task/@address)[2]','VARCHAR(50)') AS [address2],node.c1.value('(Exception/Error)[2]','VARCHAR(max)') AS [Error2],node.c1.value('(Exception/Severity)[2]','VARCHAR(max)') AS [Severity2]FROM #XMLTab CROSS APPLY colxml.nodes('/Record') as node(c1)两种方法都可以得到下面的效果:

  • 04

    其他的用法,比如:将同一节点下的数据合并为一行,SELECTcolxml.query('data(/Record/Exception/@type)[1]')  AS [type1],colxml.query('data(/Record/Exception/@type)[2]')  AS [type2],colxml.query('data(/Record/Exception/@type)'),CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/@type)')),REPLACE(CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/@type)')),' ',',')FROM #XMLTab

  • 05

    测试合并结果:SELECTCONVERT(NVARCHAR(50),colxml.query('data(/Record/@id)')) AS [id],REPLACE(CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/@type)')),' ',',') AS [type],REPLACE(CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/Task/@address)')),' ',',') AS [address],REPLACE(CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/Error)')),' ',',') AS [Error],REPLACE(CONVERT(NVARCHAR(MAX),colxml.query('data(/Record/Exception/Severity)')),' ',',') AS [Severity]FROM #XMLTab

扫描二维码推送至手机访问。

版权声明:本文由冒牌码农发布,如需转载请注明出处。

本文链接:http://js.xxbyc.cn/post/6423.html

分享给朋友:

“SQL SERVER 如何读取类型为XML的字段” 的相关文章

生活中10大奢侈的数码“毒品”

生活中10大奢侈的数码“毒品”

自从小鲜肉柯震东确认参演监狱风云后,吸毒风波被传得沸沸扬扬,就连房祖名也忍不住客串一下本色出演,对于这些名人平时的生活状态更是引起了网友们的热议!作为明星固然不缺钱花,但是会不会花则可以体现出一个人的品味和状态,千万不要再被脸骗了!现在既然...

分手后怎么挽回爱情

分手后怎么挽回爱情

分手后,人们往往集伤心急躁恐惧愤怒等众多情绪于一身。有些就直接跑到对方公司去闹,语气咄咄逼人,最终目标就是挽回他们的爱情。有些天天借酒浇愁,发泄自己。有的就更离谱了,直接在第二天找了一个新朋友。操作方法01认清状况,保持清醒现状是什么?就是...

小炒猪脆骨的做法

小炒猪脆骨的做法

猪脆骨因为形似月牙所以又叫月牙骨,小炒猪脆骨作为一道家常菜,既方便又下饭,我们一起看看是怎么做的吧。操作方法01将猪脆骨切成薄片(这样才容易炒得形似月牙,口感也更脆),青红椒切小块、葱姜蒜切碎备用。02锅中倒油,将脆骨倒下去大火煎炒到变色,...

第一次乘坐国际航班,出境流程有哪些?

第一次乘坐国际航班,出境流程有哪些?

对于第一次乘坐国际航班的人来说,出境流程很复杂,这就来说一说出境的5个流程。操作方法01飞机出发前的1小时到达。到航空公司柜台办理业务,提交许可证、检疫等。注册后,交出你的机票,护照,签证,黄皮书,在柜台其他旅行证件,并填写输出卡。02托运...

染色体检查结果的几种类型

染色体检查结果的几种类型

女人一般怀孕的时候,都要到医院做染色体检查,因为染色体是人类的遗传物质,为了下一代的健康,必须做个全面的检查。那么,染色体检查结果有哪几种呢?操作方法01一种结果是染色体同源易位。这类情况的患者,母体的卵子与精子结合后所形成的受精卵着床后,...

如何克服紧张情绪

如何克服紧张情绪

生活中,我们不可能总是一帆风顺,可能会面临一些困难,也可能会遇到一些突发事件,每当这样的情况发生,都可能会让人发生情绪上的变化,包括紧张情绪的出现,紧张情绪的来源可能是多种多样的,比如有些人因为担心而紧张,有些人因为害怕而紧张,还有些人因为...