如何选择xml节点SQL Server

时间:2012-03-20 14:59:24

标签: sql-server-2008 tsql

我有这个sql脚本

DECLARE @XmlStr XML 
SET @XmlStr = '<EmployeeID>
<Employee>48f9194f-8d46-e111-8849-0050569445f1</Employee> 
<Employee>7d725561-8d46-e111-8849-0050569445f2</Employee> 
<Employee>7d725562-8d46-e111-8849-0050569445f3</Employee> 
<Employee>7d725563-8d46-e111-8849-0050569445f4</Employee> 
</EmployeeID>' 

(SELECT 
    @XmlStr.value('(/EmployeeID//Employee/node())[1]', 'UNIQUEIDENTIFIER') as IDCode 
    FROM @XmlStr.nodes('//EmployeeID') Tab(Col))

但是当我运行它时结果是:

IDCode

48F9194F-8D46-E111-8849-0050569445F1

(1 row(s) affected)

我想选择所有四个guid 我怎么能实现这个目标呢?

我的sql server版本是10.0.5500.0

1 个答案:

答案 0 :(得分:3)

试试这个:

(SELECT 
    Col.value('.', 'UNIQUEIDENTIFIER') as IDCode 
    FROM @XmlStr.nodes('/EmployeeID/Employee') Tab(Col))

还: 尽量避免在xpath中使用//

这对某些特定情况有好处。