2012-07-20 3 views
0

에서 필드의 목록을 가져옵니다 :같은 같은 테이블 구조를 감안할 때 XML 데이터 유형

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>') 

가 어떻게이 EmployeeDetails 태그 아래 모든 태그 이름 (안 값)의 목록을 얻으려면 쿼리를 만들 수 있습니다 ? (모든 레코드에 대해 구조가 같다고 가정).

그래서, 원하는 결과는 다음과 같습니다

EmployeeName 
Age 
Address 

샘에게

답변

4

이 같은 시도 :

SELECT 
    DISTINCT T.C.value('local-name(.)[1]', 'varchar(100)') 
FROM @Employees 
CROSS APPLY EmployeeDetails.nodes('Employee/EmployeeDetails/*') AS T(C)