日期:2014-05-18  浏览次数:20609 次

已知列名列表,如何查找含有这些列的表
设有一字符串,里面是用逗号分隔的一些列名,列名个数不确定

例如:@s='col1,col2,col3'

如何在名为DB的数据库中查找一个或多个表,表必须含有@s中的列

最后输出结果应该是一个或多个表名

------解决方案--------------------
1楼的Group by 写错了。


SQL code
declare @s varchar(1000);
set @s='col1,col2,col3';

declare @column_count int;
set @column_count = LEN(@s)-LEN(REPLACE(@s,',',''))+1;

SELECT id,name
FROM sysobjects AS o
WHERE EXISTS(SELECT 1 FROM syscolumns
             WHERE o.id=id AND CHARINDEX(','+name+',',','+@s+',')>0
             GROUP BY id HAVING COUNT(*)=@column_count);

------解决方案--------------------
探讨
1、3楼的代码我都试过了,得不到想要的结果

我是用以下字符串测试的:
set @s='XZDM,XZQHDM,TCQDM,RYBH,DWBH,RYSF,RYSF_XT,FKSSQ,FKSSQ_DY,DZRQ_GR,DZRQ_DW,ZJFS,JFLX,JFJE_GR_YJ,JFJE_GR_SJ,JFJE_DW_YJ,JFJE_DW_SJ,JFJE_DWHGR,JFJS_GR,JFBL_GR,……