Как анализировать элементы XML с помощью T-SQL? - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть файл XML, который я пытаюсь разбить на таблицу с помощью SSMS 2008. Файл XML состоит из различных элементов.Это его структура.Как извлечь эти данные в таблицы?

<course>
  <lesson id="I00C8A1A645094C819BC9A0EBE2563E27">
    <element name="cmi.core.student_name">Michael,Robin</element>
    <element name="cmi.core.student_id">73Y4TZ0000K0</element>
    <element name="cmi.core.credit">credit</element>
    <element name="cmi.core.lesson_mode">normal</element>
    <element name="cmi.core.lesson_status">completed</element>
    <element name="cmi.core.entry" />
  </lesson>
  <lesson id="I66BCB22712934777BE7EB16468D43F7A">
    <element name="cmi.core.student_name">Michael,Robin</element>
    <element name="cmi.core.student_id">73Y4TZ0000K0</element>
    <element name="cmi.core.credit">credit</element>
    <element name="cmi.core.lesson_mode">normal</element>
    <element name="cmi.core.lesson_status">completed</element>
    <element name="cmi.core.entry" />
  </lesson>

Еще одно замечание: вышеприведенная запись состоит из одного столбца.Для простоты предположим, что есть только два столбца.Столбец 1 - это уникальный идентификатор со значениями: «C00707», «C00708», «C00709» и т. Д. Каждая строка имеет запись, аналогичную приведенной выше для столбца 2. Поэтому мне просто нужно разбить этот столбец 2, элемент за элементом,строка за строкой.

1 Ответ

0 голосов
/ 02 мая 2012
select 
  ID,
  T.N.value('(element[@name="cmi.core.student_name"])[1]',  'nvarchar(max)') as student_name,
  T.N.value('(element[@name="cmi.core.student_id"])[1]',    'nvarchar(max)') as student_id,
  T.N.value('(element[@name="cmi.core.credit"])[1]',        'nvarchar(max)') as credit,
  T.N.value('(element[@name="cmi.core.lesson_mode"])[1]',   'nvarchar(max)') as lesson_mode,
  T.N.value('(element[@name="cmi.core.lesson_status"])[1]', 'nvarchar(max)') as lesson_status
from YourTable
  cross apply XMLCol.nodes('/course/lesson') as T(N)

SE-Data

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