id  name1  name2  name3  name4  name5  name6 ......
01  张三
02         张三 
03                       张三
04
......在不同的字段中有相同的值“张三”,我想输出含有“张三”的所有记录。
请问实现这样的SQL怎么写???谢谢了!

解决方案 »

  1.   

    你的列是固定的吧
    那就这样:select * from table1 where name1='张三' or name2='张三' or ....... or namen='张三'
    如果不是固定的列,可以使用动态语句组成这样的语句!
      

  2.   

    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
      

  3.   

    id         name1      name2      name3      
    ---------- ---------- ---------- ---------- 
    01         张三         NULL       NULL
    02         NULL       张三         NULL
    03         NULL       NULL       张三
      

  4.   

    --try
    select * from (name1 + name2 + ... + name6) like '%张三%'不过要保证没有这样的才行
    name1   name2
    -------------
    张       三
      

  5.   

    是不是写成这样的形式:(表名如果是Test的话)select * from Test
    where (name1 + name2 + ... + name6) like '%张三%'bill024(咖啡熊)写的没太看明白,清给我详细解释以下,谢谢了。