У меня есть таблица, в которой хранятся данные об ошибках (через SSIS), основной столбец с информацией хранится в формате XML. Я хочу иметь возможность запрашивать пары имя / значение в этом столбце.
Чтобы объяснить в SQL: SELECT * FROM #tmp WHERE seq='7406834'
Пример таблицы:
CREATE TABLE #tmp(id INT, category varchar(10), details xml)
INSERT INTO #tmp(id,category,details) values (1,'cat1','<fields><field name="brnum" value="586" /><field name="qty" value="0" /><field name="seq" value="7406815" /></fields>')
INSERT INTO #tmp(id,category,details) values (1,'cat2','<fields><field name="brnum" value="586" /><field name="qty" value="0" /><field name="seq" value="7406817" /></fields>')
INSERT INTO #tmp(id,category,details) values (1,'cat3','<fields><field name="brnum" value="586" /><field name="qty" value="0" /><field name="seq" value="7406834" /></fields>')
INSERT INTO #tmp(id,category,details) values (1,'cat4','<fields><field name="brnum" value="586" /><field name="qty" value="0" /><field name="seq" value="7406841" /></fields>')
DROP TABLE #tmp
Может кто-нибудь помочь с синтаксисом. Я смог по существу использовать производную таблицу, превращая каждый элемент в столбец, а затем запрашивать это, но, похоже, должен быть более простой способ сказать, дать мне все атрибуты (идентификатор, категория, детали) для каждой строки которые имеют details.seq = 'xxxxx'.