Подтвердить что ты не робот

Лучший способ поиска в данных, хранящихся в XML в SQL Server?

Скажем, у меня есть структуры данных, хранящиеся в XML (тип данных XML) в SQL Server. Пользователь хочет вытащить запись, если в пределах данных найдена определенная строка.

Каковы мои возможности для реализации этого, и какой лучший способ это сделать?

Обратите внимание, что каждая запись может иметь разные структуры XML-данных.

4b9b3361

Ответ 2

Вы можете искать XML как строку без использования XQuery, преобразовывая ее в строку, а затем используя LIKE. Однако, поскольку вычисленный столбец не может быть частью предложения WHERE, вам нужно обернуть его другим SELECT следующим образом:

SELECT * FROM
    (SELECT *, CONVERT(varchar(MAX), [XMLData]) as [XMLDataString] FROM [NamedTable]) irrelevant
WHERE [XMLDataString] like '%SEARCH_STRING%'

Ответ 3

Я думаю, что если вы считаете, что вам нужно будет искать XML на регулярной основе, вы бы сэкономили бы боль, извлекая некоторые из полей из XML в свои собственные столбцы в базе данных. Хранение XML как фрагмента текста не очень дружественно к базе данных - его нельзя индексировать, кэшировать должным образом или легко использовать в сложных запросах.

Ответ 4

Если ваш Xml строго типизирован, как в вашей схеме, используйте материал XQuery и создавайте представления поверх столбцов Xml. Сильно типизированный материал не является обязательным условием, но он позволяет вам строить свои взгляды предсказуемым образом.