2013-11-25 151 views
0

我的請求XML的格式如下SQL服務器讀取XML文檔

<Tr> 
    <Row id="50000" type =A/> 
    <Row id="50002" type =B/> 
    <Row id="50003" type =C/> 
    <Row id="50004" type =C/> 
    </Tr> 

有沒有在SQL服務器的方式來解析這個XML的存儲過程,並創建一個臨時表以這種格式

填寫記錄
Type A - 50000 
Type B - 50002 
Type C - 50003,500004 

或本格式

Type  id 
A  50000 
B  50002 
C  50003 
C  50004 
  • 我列出TEM
+0

是的,有。你已經嘗試了什麼? – MarcinJuraszek

+0

我的想法是使用XML來循環elemnts並插入臨時table.but我有問題來查詢數據與XML – andy

回答

1

一旦你讓你的XML是有效 XML,那麼是的,你可以很容易地解析成T-SQL中的行和列:

這裏,@input變量被定義爲XML並設置一個固定值 - 這可能是在你的存儲過程的輸入參數

DECLARE @input XML = '<Tr> 
    <Row id="50000" type="A" /> 
    <Row id="50002" type="B" /> 
    <Row id="50003" type="C" /> 
    <Row id="50004" type="C" /> 
    </Tr>' 

SELECT 
    Type = XCol.value('@type', 'varchar(10)'), 
    ID = XCol.value('@id', 'int') 
FROM 
    @input.nodes('Tr/Row') AS XTbl(XCol) 

帶給你所需要的輸出(第二風格 - 一排每<Row>輸入你的XML)