查询包含某个值的所有记录????
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
-------------
张 三