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
-
怎麼取消電腦自動鎖屏
不喜歡電腦自動鎖屏,但也不知道怎麼設置,沒關係,一起和我來了解一下吧。操作方法(01)我們先打開“控制面板”,可以在“開始菜單”或者是直接在桌面上打開,大家就自己選擇吧。(02)打開之後,我們選擇“系統和安全”。(03)再在“電源選項”下,選擇“更改計算機睡眠時間”。(04)最...
-
筆記本電腦win10如何快速取消“鎖屏密碼”?
日常工作生活中,除了工作和公眾場所,私人以及家裏電腦沒有必要設置鎖屏密碼,每次登錄輸入一連串密碼顯得多餘,已經設置的可以取消。下面介紹一下“筆記本電腦win10如何快速取消“鎖屏密碼”?”操作方法(01)右鍵點擊桌面左下角“開始”——“運行”,打開“運行”對話框...
-
郵箱快速註冊,不用手機號
如何快速註冊郵箱?如何不用手機號註冊郵箱?僅以TOM郵箱為例。操作方法(01)點擊連接進入TOM郵箱註冊頁面輸入郵箱賬號等信息(02)選擇微信註冊,拿出手機掃一掃即可完成註冊特別提示使用微信掃一掃,不用手機號和驗證碼...
-
打印機出現卡紙怎麼辦,打印機卡紙怎麼處理
有沒有小夥伴在使用打印機的時候遇到過故障。下面我們就一起來看看關於打印機出現卡紙怎麼辦?打印機卡紙應該怎麼處理的具體方法。打印機卡紙要怎麼拿出來(01)當我們使用的打印機突然出現突然卡紙現象是怎麼回事呢?首先我們需要先打開打印機的“前額”。(02)下圖就表...