Я пытаюсь запросить определенное значение в поле XML. Я видел много примеров, но они, кажется, не то, что я ищуSQL Server 2005 - поиск значения в поле XML
Предположив мой XML поле называется XMLAttributes и таблицы TableName, и полное значение XML, как ниже:
<Attribute name="First2Digits" value="12" />
<Attribute name="PurchaseXXXUniqueID" value="U4RV123456762MBE79" />
(хотя поле XML часто будет иметь другие атрибуты, а не только PurchaseXXXUniqueID)
Если я ищу для определенного значения в PurchaseXXXUniqueID имя атрибута - говорят U4RV123456762MBE79 - как бы я написать запрос? Я считаю, что это будет что-то вроде:
select *
from TableName
where XMLAttributes.value('(/path/to/tag)[1]', 'varchar(100)') = '5FTZP2QT8Z3E2MAV2D'
... но это путь/к/тег, который мне нужно выяснить.
Возможно, есть другие способы получить значения, которые я хочу.
Подводя итог - мне нужно получить все записи в таблице, где значение определенного атрибута в поле xml соответствует значению, которое я передам в запрос.
благодарит за помощь! Sylvia
Редактировать: Я пытался сделать это проще, но в случае, если это имеет значение - в конечном итоге у меня будет временная таблица из 50 или около того потенциальных значений для поля PurchaseXXXUniqueID. Для этого я хочу получить все соответствующие записи из таблицы с полем XML.
Это сделало - спасибо! Тем не менее, это было очень медленно. Не то, чтобы медленная производительность была проблемой с вашим запросом, просто эти таблицы не настроены для запросов XML. Если бы у меня был весь список идентификаторов, которые я хочу найти, они помещали их в временную таблицу, а затем присоединяли бы их примерно так: – Sylvia
на Nodes.Attr.value ('(@ value) [1]', 'varchar (100) ') = # tempTable.UniqueID ...... – Sylvia
быть способ сделать это (извините, cr/lf в конечном итоге стал новым) – Sylvia