2010-08-18 120 views
0

數據庫具有帶有3列empID,badgID,XMLDATA的表EMP。如何從表中讀取XML屬性?

的XMLDATA有數據類型「CLOB」和數據的格式爲 -

<Record id="11"> 
    <Demo rID="5"/> 
</Record> 

我怎麼能在單個查詢上述XMLDATA讀取節點「演示」價值屬性「RID」?

服務器 - SQL Server 2005中

+1

,** **請在高亮文本編輯器的線,然後點擊「代碼」按鈕(101 010)在編輯器工具欄上進行很好的格式化和語法突出顯示! – 2010-08-18 14:13:04

+1

什麼是實際的數據類型?就我所知,clob不是SQL Server數據類型。 – 2010-08-18 14:14:06

+0

嚴重 - 數據類型「CLOB」?據我所知,SQL Server沒有 - 我們有'IMAGE,TEXT,NTEXT'(全部過時)或'(N)VARCHAR(MAX)'或'VARBINARY(MAX)'或'XML'所以這是真的嗎? – 2010-08-18 14:14:23

回答

2

如果您有存儲與數據類型的XML在SQL Server的數據,那麼你可以這樣做:

SELECT 
    empID, badgID, 
    XmlData.value('(/Record/Demo/@rID)[1]', 'int') as 'rID' 
FROM 
    dbo.YourTable 

如果你的數據類型是 XML - 實際上它應該!您可能需要使用這樣的事情(可能並非在所有情況下工作):如果您發佈的代碼或XML

SELECT 
    empID, badgID, 
    (CAST XmlData AS XML).value('(/Record/Demo/@rID)[1]', 'int') as 'rID' 
FROM 
    dbo.YourTable 
+0

謝謝。 我試過這兩個查詢,它失敗並且說「模式XMLDATA不存在」。 但是XMLDATA列存在於表中。 – indigenious 2010-08-19 07:44:33

+0

@indigenious:你能告訴我們實際的表格結構嗎?數據庫圖表什麼的? – 2010-08-19 08:14:26

+0

我的歉意,我只能讀取數據庫的訪問權限,並沒有意識到這個架構。 – indigenious 2010-08-20 13:36:55