2014-10-10 2 views
0

У меня есть таблица следующим образом:Запрос XML на столе

CREATE TABLE MyTable (
Content XML 
) 

Я вставленный некоторые значения в MyTable:

INSERT INTO MyTable 
VALUES('<As> 
      <A name="A_name_1"> 
      <Bs> 
       <B name="B_name_1"></B> 
      </Bs> 
      </A> 
      <A name="A_name_2"> 
      <Bs> 
       <B name="B_name_1"></B> 
       <B name="B_name_2"></B> 
      </Bs> 
      </A> 
      <A name="A_name_3"> 
      <Bs> 
       <B name="B_name_1"></B> 
       <B name="B_name_2"></B> 
       <B name="B_name_3"></B> 
      </Bs> 
     </A> 
     </As>') 

Как я могу использовать SQL Server для запроса MyTable, чтобы получить результат, следовать?

Я новичок в запросе xml в РСУБД. Пожалуйста, помогите мне! Спасибо огромное!

A    B 
--------  ----------- 
A_name_1  B_name_1 
A_name_2  B_name_1 
A_name_2  B_name_2 
A_name_3  B_name_1 
A_name_3  B_name_2 
A_name_3  B_name_3 
+0

Добро пожаловать в StackOverflow: если вы разместите код, XML или данных образцов, пожалуйста ** ** выделить те строки в текстовый редактор и нажмите кнопку «образцы кода» ('{}') на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –

ответ

1

Вы должны использовать метод XML nodes() (см MSDN), таким образом:

SELECT y.XmlCol.value('(@name)[1]', 'VARCHAR(100)') AS A_name, 
     z.XmlCol.value('(@name)[1]', 'VARCHAR(100)') AS B_name 
FROM dbo.MyTable x 
CROSS APPLY x.Content.nodes('As/A') y(XmlCol) 
CROSS APPLY y.XmlCol.nodes('Bs/B') z(XmlCol) 
+1

Большое вам спасибо, мистер Богдан. Это сработало! –

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