таблицу - из sql в xml




Поиск в XML с помощью LIKE или аналогичной операции полного поиска (2)

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

Эквивалент

Select s.Name, ts.ValueXML from table t (nolock) 
join table2 ts (nolock) on t.key_Id = ts.key_Id
join table3 s (nolock) on ts.key_Id=s.key_Id
where s.Name like '%Lab%' and ts.ValueXML  like '%PreviewDateRange%'

ОШИБКА: тип данных аргумента xml недопустим для аргумента 1 функции like.

соответствующие столбцы таблицы ts

ValueXml (XML(.), null)

Предмет, который я ищу, должен быть атрибутом. Так что если вышеприведенное невозможно, то все, что содержит этот атрибут, будет хорошей альтернативой.


Простейшим (но определенно не самым быстрым для выполнения) способом было бы привести ваш столбец к nvarchar(max) прежде чем передать его в like :

cast(ValueXml as nvarchar(max)) like '%PreviewDateRange%'

Там вы идете:

SELECT *
FROM MyTable
WHERE MyXmlMetadataColumn.exist('//*/text()[contains(upper-case(.),upper-case("MySearchTerm"))]') = 1

Кажется, это работает нормально для меня, а также не ищет имена тегов XML как решение, предоставленное "dasblinkenlight".

Я не знаю, насколько это эффективно.





sql-server-2008-r2