处理 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)的主要内容,如果未能解决你的问题,请参考以下文章

动态获取 SQL Server 中不同列中的 XML 数据类型值

SQL Server XML 数据类型和 QUOTED_IDENTIFIER

sql XML数据类型和在SQL Server中存储XML

SQL Server XML 数据类型

SQL Server 对XML数据类型的SQL语句总结

从SQL Server的XML数据类型字段中提取数据