日期:2014-05-19  浏览次数:20569 次

查询包含某个值的所有记录????
id     name1     name2     name3     name4     name5     name6   ......
01     张三
02                   张三  
03                                               张三
04
......

在不同的字段中有相同的值“张三”,我想输出含有“张三”的所有记录。
请问实现这样的SQL怎么写???

谢谢了!



------解决方案--------------------
你的列是固定的吧
那就这样:select * from table1 where name1= '张三 ' or name2= '张三 ' or ....... or namen= '张三 '
如果不是固定的列,可以使用动态语句组成这样的语句!
------解决方案--------------------
create table test(id varchar(10),name1 varchar(10),name2 varchar(10),name3 varchar(10))
insert test select '01 ', '张三 ',null,null
union all select '02 ',null, '张三 ',null
union all select '03 ',null,null, '张三 '

declare @s varchar(8000)
set @s= ' '
select @s=@s+ 'or '+name+ '= ' '张三 ' ' 'from syscolumns where id=object_id( 'test ') and colid> 1
select @s= 'select * from test where '+stuff(@s,1,2, ' ')
exec(@s)

drop table test
------解决方案--------------------
--try
select * from (name1 + name2 + ... + name6) like '%张三% '

不过要保证没有这样的才行
name1 name2
-------------
张 三