SQL SERVER 如何读取类型为XML的字段
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),y('data(/Record/@id)')) AS [id],CONVERT(NVARCHAR(max),y('data(/Record/Exception/@type)[1]')) AS [type1],CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/Task/@address)[1]')) AS [address1],e('data(/Record/Exception/Error)[1]','varchar(max)') AS [Error1],e('data(/Record/Exception/Severity)[1]','varchar(10)') AS [Severity1],CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/@type)[2]')) AS [type2],CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/Task/@address)[2]')) AS [address2],e('data(/Record/Exception/Error)[2]','varchar(MAX)') AS [Error2],e('data(/Record/Exception/Severity)[2]','varchar(10)') AS [Severity2]FROM #XMLTab
(03)方法二:e('(@id)[1]','VARCHAR(50)') AS [id],e('(Exception/@type)[1]','VARCHAR(50)') AS [type1],e('(Exception/Task/@address)[1]','VARCHAR(50)') AS [address1],e('(Exception/Error)[1]','VARCHAR(max)') AS [Error1],e('(Exception/Severity)[1]','VARCHAR(max)') AS [Severity1],e('(Exception/@type)[2]','VARCHAR(50)') AS [type2],e('(Exception/Task/@address)[2]','VARCHAR(50)') AS [address2],e('(Exception/Error)[2]','VARCHAR(max)') AS [Error2],e('(Exception/Severity)[2]','VARCHAR(max)') AS [Severity2]FROM #XMLTab CROSS APPLY s('/Record') as node(c1)两种方法都可以得到下面的效果:
(04)其他的用法,比如:将同一节点下的数据合并为一行,y('data(/Record/Exception/@type)[1]') AS [type1],y('data(/Record/Exception/@type)[2]') AS [type2],y('data(/Record/Exception/@type)'),CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/@type)')),REPLACE(CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/@type)')),' ',',')FROM #XMLTab
(05)测试合并结果:SELECTCONVERT(NVARCHAR(50),y('data(/Record/@id)')) AS [id],REPLACE(CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/@type)')),' ',',') AS [type],REPLACE(CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/Task/@address)')),' ',',') AS [address],REPLACE(CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/Error)')),' ',',') AS [Error],REPLACE(CONVERT(NVARCHAR(MAX),y('data(/Record/Exception/Severity)')),' ',',') AS [Severity]FROM #XMLTab
-
参考文献在文中怎么标注(word)
(尾注添加方法)在文章中标注参考文献,还在一个一个慢慢敲吗?看看用word怎么快速实现吧。这里以word2003为例。操作方法(01)光标移到要加入参考文献标注的地方(02)菜单中“插入”——“引用”——“脚注和尾注”(03)如图设置(04)确定后在该处就插入了一个上标“1”,而光标...
-
富士施乐硒鼓清零方法
如何将富士施乐硒鼓清零呢?跟着小编一起来学习看看~操作方法(01)当你的打印机上开始闪烁黄灯时,就是提醒你需要更换硒鼓了;(02)按住机器上的白色按钮,长按关机;(03)关机后,拔掉机身后的USB连接线;(04)再次长按白色按钮开机键,不要松手,打开机器前盖;(05)取出硒鼓盒;(06)整个取出后,再...
-
塞尔达传说 支线消失的咕咕鸡 任务攻略
很多小伙伴可能不了解塞尔达咕咕鸡任务,非常好奇想要知道,那么我就来解答一下这个问题吧,具体内容请看下文:塞尔达咕咕鸡任务一共7只鸡分布在村庄里,但是在地图上并没有任何的提示,寻找起来颇费一番功夫。操作方法(01)在地图上找到卡卡利科村,点进去;(02)跟丢鸡的老爷爷对...
-
邮箱快速注册,不用手机号
如何快速注册邮箱?如何不用手机号注册邮箱?仅以TOM邮箱为例。操作方法(01)点击连接进入TOM邮箱注册页面输入邮箱账号等信息(02)选择微信注册,拿出手机扫一扫即可完成注册特别提示使用微信扫一扫,不用手机号和验证码...