SQL选择TableName,ColumnName和ColumnValue

时间:2017-05-25 22:35:21

标签: sql

我在MSCRM中有一个带有活动实体的错误。我有活动guid但不幸的是,多个实体被认为是活动,所以它可以在任何这些表上,包括可能是自定义表。所以我想要这样一个SQL查询来选择TableName,ColumnName和ColumnValue,其中ColumnName就像'%id'。我有这个通过名称选择列但我无法弄清楚如何从这个

获取值
select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME like '%id' 
order by TABLE_NAME

我无权创建过程

1 个答案:

答案 0 :(得分:2)

一点点动​​态SQL可能有所帮助。

您可能会注意到我排除了视图以避免冗余信息(我使用了视图的命名约定)... Table_Name not like 'vw_%'您可以使用INFORMATION_SCHEMA.Tables的连接排除视图

示例

Declare @SQL varchar(max)
Set @SQL=Stuff((Select 'Union All ' +Expr 
                 From  (
                        Select Expr  = 'Select Table_Schema='''+Table_Schema+''',Table_Name='''+Table_Name+''',Column_Name='''+Column_Name+''',Value=cast('+Column_Name+' as varchar(max)) From '+quotename(Table_Schema)+'.'+quoteName(Table_Name)+' '
                         From  INFORMATION_SCHEMA.COLUMNS 
                         Where COLUMN_NAME like '%id' 
                           and Table_Name not like 'vw_%'
                       ) A
                 For XML Path ('')),1,10,'')
Exec(@SQL)

<强>返回

enter image description here