Это недопустимый элемент xml:
<This is a test>
изменение этого значения на
<ThisIsATest>
исправит ваш запрос, но после исправления, как есть, ваш запрос невернуть что-нибудь. Мои навыки работы с T-SQL XQuery устарели, но вы можете получить то, что пытаетесь сделать, используя nodes
и метод values
.
Это:
SELECT
author = bs.book.value('(author/text())[1]', 'varchar(8000)'),
title = bs.book.value('(title/text())[1]', 'varchar(8000)'),
price = bs.book.value('(price/text())[1]', 'varchar(8000)')
FROM (VALUES(@x)) AS ml(x)
CROSS APPLY ml.x.nodes('bookstore/book') AS bs(book);
Возвращает:
author title price
--------------------- --------------------- ----------
Giada De Laurentiis Everyday Italian 30.00
J K. Rowling Harry Potter 29.99
James McGovern XQuery Kick Start 49.99
Erik T. Ray Learning XML 39.95
Это (включаяВаш образец XML):
DECLARE @x AS XML = N'
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>';
SELECT
author = bs.book.value('(author/text())[1]', 'varchar(8000)'),
title = bs.book.value('(title/text())[1]', 'varchar(8000)'),
price = bs.book.value('(price/text())[1]', 'varchar(8000)')
FROM (VALUES(@x)) AS ml(x)
CROSS APPLY ml.x.nodes('bookstore/book') AS bs(book)
FOR XML PATH('Book');
Возвращает:
<Book>
<author>Giada De Laurentiis</author>
<title>Everyday Italian</title>
<price>30.00</price>
</Book>
<Book>
<author>J K. Rowling</author>
<title>Harry Potter</title>
<price>29.99</price>
</Book>
<Book>
<author>James McGovern</author>
<title>XQuery Kick Start</title>
<price>49.99</price>
</Book>
<Book>
<author>Erik T. Ray</author>
<title>Learning XML</title>
<price>39.95</price>
</Book>