Допустим, у меня есть xml, хранящийся в базе данных. Содержит список контактов, например:
<Person>
<Name>Irwin</Name>
<Address>Home, In a place</Address>
<Contact type="mobile">7771234</Contact>
<Contact type="home">6311234</Contact>
<Contact type="work">6352234</Contact>
<Contact type="fax">6352238</Contact>
</Person>
Он хранится в столбце xml в базе данных сервера sql, в таблице с такой структурой:
TABLE [Contacts](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Info] [xml] NOT NULL,
[Status] [tinyint] NOT NULL,
[CreateTime] [datetime] NOT NULL,
) ON [PRIMARY]
Я хотел бы написать запрос, который преобразует элементы Contact в строки новой таблицы, соответствующие полю идентификатора таблицы Contacts.
Я пробовал это:
SELECT Cast(Request.query('/Person/Contact/text()') as varchar(100)) as [Number], ID
FROM Contacts
Но он извлекает все данные из данного фрагмента XML в столбце и помещает их все в одну строку вместе с идентификатором этой строки, например так:
Номер, ID
7771234631123463522346352238, 1500
Когда я хотел бы получить это:
Номер, ID
7771234, 1500
6311234, 1500
6352234, 1500
6352238, 1500
Можете ли вы указать мне правильное направление?