有一个表t,100列,字段分别为a1,a2,a3...a100
现在我需要写一个查询,select * from t where a1="a" and a2="a" and a3="a"...and a100="a"
就是找出所有字段等于a的,怎么简写呢?这样写也太笨拙了。。
现在我需要写一个查询,select * from t where a1="a" and a2="a" and a3="a"...and a100="a"
就是找出所有字段等于a的,怎么简写呢?这样写也太笨拙了。。
where a1+a2+...+a100 = replicate('a',100)
declare @sql varchar(max)
set @sql='select * from t where 1=1'
select @sql=@sql+' and '+name+'=''a'''
from syscolumns where id=object_id(N't')
exec(@sql)
#3动态循环表的所有列,然后拼接,这样就不用你一个列一个列的写了。
exec(@sql) 之间你可以先select @sql 看看结果。
declare @sql varchar(8000)
select @sql=isnull(@sql+' and ','')+name+'=''a''' from syscolumns where id = object_id('your table name')
set @sql='select * from [your table name] where '+@sql
print @sql
你可以select * from sys.objects where id=object_id(N't') 看下就知道了