2012-03-07 14 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; 
関連する問題