2012-03-07 1 views
1

У меня есть таблица со столбцом типа xml. Мне нужно извлечь значения из столбца xml. Я пробовал все возможные способы, и я не мог добиться успеха. Пожалуйста, найдите ниже образец данных xml.Как извлечь данные из столбца xml в sql 2008

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

Пожалуйста, помогите мне извлечь данные. Тонны благодарности заранее.

Thanks, 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^