2012-03-07 6 views
1

xml 형식의 열이있는 테이블이 있습니다. xml 열에서 값을 추출해야합니다. 가능한 모든 방법을 시도하고 성공할 수 없습니다. 아래 XML 데이터 샘플을 찾으십시오.SQL 2008에서 xml 열에서 데이터를 추출하는 방법

<Menu> 
    <Id>1</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-1.jpg</Url> 
</Menu> 
<Menu> 
    <Id>2</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-2.jpg</Url> 
</Menu> 
<Menu> 
    <Id>3</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-3.jpg</Url> 
</Menu> 
<Menu> 
    <Id>4</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-4.jpg</Url> 
</Menu> 
<Menu> 
    <Id>5</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-5.jpg</Url> 
</Menu> 

데이터를 추출하는 데 도움을주십시오. 미리 감사드립니다.

감사합니다. Darthick. [email protected]

+0

는 [이 링크를 통해 이동 http://stackoverflow.com/questions/2148197/extracting-data-from-xml-in- sql-server-column] 및 [http://stackoverflow.com/questions/6070256/the-best-way-to-extract-data-from-xml-with-xquery] – Java

+0

XML 데이터로 보이지 않습니다. -). 실제 XML이나 스 니펫을 게시하고 추출해야하는 요소를 알려주십시오. –

답변

2
declare @T table 
(
    XMLCol xml 
) 

insert into @T values 
('<Menu> 
    <Id>1</Id> 
     <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-1.jpg</Url> 
    </Menu> 
    <Menu> 
    <Id>2</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-2.jpg</Url> 
    </Menu> 
    <Menu> 
    <Id>3</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-3.jpg</Url> 
    </Menu> 
    <Menu> 
    <Id>4</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-4.jpg</Url> 
    </Menu> 
    <Menu> 
    <Id>5</Id> 
    <Url>http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-5.jpg</Url> 
    </Menu>') 

select X.N.value('Id[1]', 'int') as Id, 
     X.N.value('Url[1]', 'varchar(max)') as Url 
from @T as T 
    cross apply T.XMLCol.nodes('/Menu') as X(N) 

결과 :

Id   Url 
----------- --------------------------------------------------------------------- 
1   http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-1.jpg 
2   http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-2.jpg 
3   http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-3.jpg 
4   http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-4.jpg 
5   http://www.zmtcdn.com/menus/1211/menu-photo-for-barbeque-nation-5.jpg 
1

네임 스페이스가있는 경우. XML :

<PersonInfo xmlns="http://mynamspace.lv/default"> 
    <Person ID="22"> 
     <Name>MyName</Name> 
     <Profession>MyProfession</Profession> 
    </Person> 
</PersonInfo> 

그런 다음이 같은 일을 수행해야합니다

WITH XMLNAMESPACES (DEFAULT 'http://mynamspace.lv/default') 
SELECT 
    @myXML.value('(PersonInfo/Person/@ID)[1]', 'nvarchar(100)') as ID, 
    @myXML.value('(PersonInfo/Person/Name)[1]', 'nvarchar(100)') as Name, 
    @myXML.value('(PersonInfo/Person/Profession)[1]', 'nvarchar(100)') as Profession; 
관련 문제