2010-08-18 84 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