【发布时间】:2009-04-16 07:57:15
【问题描述】:
我有一个 SQL 2005 数据库,我知道数据库中有一个表,其中包含一些 xml 字符串。我怎样才能找到这个表?
【问题讨论】:
-
字段是varchar还是xml数据类型?
标签: sql xml sql-server-2005
我有一个 SQL 2005 数据库,我知道数据库中有一个表,其中包含一些 xml 字符串。我怎样才能找到这个表?
【问题讨论】:
标签: sql xml sql-server-2005
如果字段实际上是 XML 类型,那么此查询将为您提供您正在寻找的内容:
select * from information_schema.columns
where DATA_TYPE = 'XML'
马克
【讨论】:
运行这个:
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 where column like '%%' union 中选择不同的 'table.column'
获取该结果集,剪掉最后一个并集,然后将结果集作为 SQL 语句运行。它将为具有一行或多行看起来像 XML 的任何列返回表名和列名。
编辑:这是凭记忆的;连接到 systypes 和类型名称可能是错误的,所以从 systypes 中选择并检查。
【讨论】: