Как запросить XML в SQL XML в базе данных SQL Server 2008 - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть база данных SQL Server 2008.Существует таблица с именем Documents со следующей схемой:

 Id            int     PK      
 DocumentXml   xml

Все XML-документы выглядят примерно так:

<docroot>
    <name>Some Name</name>
</docroot>

Я хочу выбрать все записи, где текстовое значение/docroot/name начинается с буквы "S" (без учета регистра).

Как выполнить этот запрос с максимальной производительностью?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Не уверен насчет производительности - но вы можете сделать что-то вроде этого:

SELECT (list of columns)
FROM dbo.Documents
WHERE DocumentXml.value('(/docroot/name)[1]', 'varchar(100)') LIKE 'S%'

Если в вашей сортировке базы данных не учитывается регистр, эта операция LIKE также не учитывает регистр.

1 голос
/ 23 февраля 2011

Я хочу выбрать все записи, где текстовое значение /docroot/name начинается с буквой "S" (без учета регистра).

Используйте это выражение XPath :

/*/name[starts-with(translate(.,'S','s'), 's')]
...