处理 XML 数据类型(SQL SERVER 2005)

Posted

技术标签:

【中文标题】处理 XML 数据类型(SQL SERVER 2005)【英文标题】:Dealing with XML datatype(SQL SERVER 2005) 【发布时间】:2009-10-22 03:53:00 【问题描述】:

我有一个包含 2 列 EmployeeId (int) 和 EmployeeDetails(XMl type) 的表

EmployeeId EmployeeDetails

1 Priyanka 24 阿根廷

2 Sarkar 28 澳大利亚

我需要像这样的输出

EmployeeId EmpName 年龄地址


1 普里扬卡 24 阿根廷

2 Sarkar 28 澳大利亚

请帮忙,因为我是 xml 新手

【问题讨论】:

【参考方案1】:

Books Online 关于 XML 的主题有点难以理解;你可能想试试这个网站寻求帮助:http://blogs.msdn.com/mrorke/archive/2005/06/01/423965.aspx这里有一段代码可以帮助你。

DECLARE @Employees TABLE
    (
      EmployeeID INT ,
      EmployeeDetails XML
    )

INSERT  INTO @Employees
        ( EmployeeID ,
          EmployeeDetails 
        )
VALUES  ( 1 ,
          '<Employee><EmployeeDetails><EmployeeName> Priyanka </EmployeeName><Age> 24 </Age><Address> Argentina</Address></EmployeeDetails></Employee>'

        )


INSERT  INTO @Employees
        ( EmployeeID ,
          EmployeeDetails 
        )
VALUES  ( 2 ,
          '<Employee><EmployeeDetails><EmployeeName> Sarkar </EmployeeName><Age> 28 </Age><Address> Australia</Address></EmployeeDetails></Employee>'
        )


SELECT  EmployeeID ,
        EmployeeName = m.value('EmployeeName[1]', 'varchar(50)') ,
        Age = m.value('Age[1]', 'int') ,
        Address = m.value('Address[1]', 'varchar(100)')
FROM    @Employees e
        CROSS APPLY EmployeeDetails.nodes('/Employee/EmployeeDetails') AS e1 ( m )   

【讨论】:

非常感谢先生。还有1件事。先生,正如我所说,使用 xml 对我来说是新的。你能解释一下代码吗 我试试;我自己有点新。 CROSS APPLY 用于将非 xml 元素与 xml 节点连接起来,以获得混合结果集。 xml.nodes 方法用于将 xml 分解成行,使用指定的路径作为参考点。 e1(m) 为您提供在查询中使用的别名,xml.value 方法查看每个别名节点以查找感兴趣的标记,并将其转换为适当的 SQL Server 类型。你必须玩它才能真正开始理解它,但我希望这会有所帮助。

以上是关于处理 XML 数据类型(SQL SERVER 2005)的主要内容,如果未能解决你的问题,请参考以下文章