处理 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
2
我需要像这样的输出
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 数据类型值