Найти все таблицы с полем, содержащим строковые значения XML - PullRequest
2 голосов
/ 16 апреля 2009

У меня есть база данных SQL 2005, и я знаю, что в базе данных есть таблица, в которой есть несколько строк XML. Как я могу найти эти таблицы?

Ответы [ 2 ]

5 голосов
/ 16 апреля 2009

Если поля на самом деле имеют тип XML, то этот запрос даст вам то, что вы ищете:

select * from information_schema.columns
where DATA_TYPE = 'XML'

Марк

2 голосов
/ 16 апреля 2009

Запустите это:

select 'select distinct ''' || a.name || '.' || b.name 
|| '''  from ' || b.name 
|| 'where ' || b.name || ' like ''%<%/>%'' union ' 
from systable a 
join syscolumns b on (a.id = b.id)
join systypes c on (b.type = c.xtype) 
where a.type ='U' and c.name = ('CHAR', 'CHARN', 'VARCHAR', 'VARCHARN');

Первый набор результатов будет иметь одну строку на символьный столбец в базе данных:

выберите отдельный «table.column» из таблицы, где столбец похож на «% <% />%» union

Возьмите этот набор результатов, отрежьте последний объединение и запустите набор результатов как оператор SQL. Он вернет имя таблицы и имя столбца для любого столбца, в котором одна или несколько строк выглядят как XML-иш.

Редактировать: это из памяти; соединение с systypes и именами типов может быть неправильным, поэтому выберите из systypes и проверьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...