Использование .query () в t-sql для получения только внутреннего текста - PullRequest
5 голосов
/ 11 марта 2011

Как я могу использовать синтаксис .query() t-sql для выбора определенного узла, но получить только внутренний текст, а не внутренний текст, завернутый в теги узла?

Как в случае, когда ясделайте это:

SELECT TOP 1 [XMLContent].query('/Event/Username'), * from Events

Я получу:

<Username>BURGUNDY</Username>

Но я хочу просто BURGUNDY.Очевидно, что я мог сделать некоторые подстроки, чтобы получить это, но я надеялся, что был быстрый и легкий способ сделать это.

Ответы [ 3 ]

8 голосов
/ 11 марта 2011

Вы можете использовать функцию xquery data ():

[XMLContent].query('data(/Event/Username)')

Но это вернет XML как тип (даже при отсутствии тегов).

Вы также можете использовать .value вместо .query:

[XMLContent].value('/Event[1]/Username[1]', 'NVARCHAR(MAX)')
4 голосов
/ 11 марта 2011
declare @xml xml;
set @xml = '<Event><Username>BURGUNDY</Username></Event>'

Select @xml.value('/Event[1]/Username[1]', 'varchar(30)');
3 голосов
/ 11 марта 2011

используйте .value () вместо .query ()

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