我有一个SQL 2005数据库,我知道在数据库中有一个表中有一些xml字符串。我怎样才能找到这张表?
答案 0 :(得分:5)
如果字段实际上是XML类型,那么此查询将为您提供所需内容:
select * from information_schema.columns
where DATA_TYPE = 'XML'
马克
答案 1 :(得分:2)
运行:
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',其中列为'%&lt;%/&gt;%'union
获取结果集,剪掉最后一个union,然后将结果集作为SQL语句运行。它将为具有一行或多行看起来像XML的任何列带回表名和列名。
编辑:这是来自记忆;对systypes和类型名称的连接可能是错误的,因此从systypes中选择并检查。