我是个新手 现在做一个模糊的查找 fanginfo
id序号
type类别
fi_bt标题
fi_fx房型
fi_hx户型
fi_cq产权
fi_qy区域
fi_kjdd靠近地段
fi_dz地址
fi_lc楼层
fi_mj建筑面积
fi_nd 建筑年代
fi_zj出售总价
fi_tj价格条件
fi_ms价格描述
fi_sfzj是否中介
fi_yxq有效期
fi_zpfs租凭方式
fi_qgj求购价
fi_zq最短租期
fi_fzj租金fi_lcyq楼层要求
fi_cyyq朝阳要求
fi_cqzh产权证号
fi_cqr产权人姓名
fi_symj使用面积
fi_tupian图片
fi_zxcd装修程度
fi_ptss配套设施
fi_fkyq付款要求
fi_yjyq押金要求
fi_rzsj入住时间
fi_gjzd工交站点
fi_qt其他说明
这个是表结构 我想输入一个关键字 来遍例整个表,但是现在的问题是还有其他的条件 那样语句内容会很长 我不想 type like...一个个的 这样写 请问有什么号的办法一次就吧整个表名遍例出来吗 然后我在 and下其他的条件 谢谢各位老师了 帮帮我吧!

解决方案 »

  1.   

    http://blog.csdn.net/greystar/articles/2743170.aspx
      

  2.   

    上面的哥哥能给个具体的做法吗? 我理解那个思路了 但是SQL语句那例很模糊
      

  3.   

    最简单的如果你的字段全是字符型的化那就把他全加起来.然后like..-_-!
      

  4.   

    Select  *   
    From   表名   
    Where   字段1+字段2+字段3+.....   like   "%关键字%"
      

  5.   


    那你就要动态拼sql语句了.你可能会觉得更麻烦.
      

  6.   


    SELECT dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name
    FROM dbo.syscolumns INNER JOIN
    dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
    WHERE dbo.sysobjects.name='表名'and 
    (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties'))
    这是获取一个表中的所有字段.你根据这个慢慢拼吧..最好写个存储过程.最终你的拼完后生成的sql其实就是你每个字段都like ..like一遍.只是字段是通过动态拼出来的.
      

  7.   

    那要怎么做呢 ?感觉是个先进的方法哦  不是叫我用 system.text这个类的方法拼句子吧?
      

  8.   


    写个存储过程在过程里边拼.先通过上边给的那串sql获取你的表里的所有字段.然后循环把这些字段都拼成一条sql语句的where部分.拼完后最终生成的sql就是你每个字段都like一遍那种.只不过是拼的时候只要写一个即可了.因为有循环.不知道你明白不明白.如:@sql = @sql+变量+' like ''%关键字%'''//对这个做循环,变量就是你的表的字段名,对所有的字段进行循环.
      

  9.   

    晕.结帖了.刚才有点忙.我写了一个简单的你参考一下吧建立测试环境:create table table1
    (
    col1 varchar(10),
    col2 varchar(10),
    col3 varchar(10)
    )insert into table1
    select 'a','b','c'
    union
    select 'a1','b1','c1'
    union
    select 'a2','b2','c2'select * from table1
    拼sql语句如下:declare @temp table
    (
    [id] int IDENTITY(1,1), 
    [Column_name] varchar(10)
    )declare @tempId int,@colName varchar(10),@sql varchar(500)set @sql = 'select * from table1 where 'insert into @temp (Column_name)
    SELECT dbo.syscolumns.name AS Column_name
    FROM dbo.syscolumns INNER JOIN
    dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
    WHERE dbo.sysobjects.name='table1'and 
    (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties'))--select * from @tempWHILE EXISTS(select [id] from @temp) 
    begin 
    SET ROWCOUNT 1  
    select @tempId = [id],@colName=[Column_name] from @temp 
    SET ROWCOUNT 0 
    delete from @temp where [id] = @tempId set @sql = @sql+' '+@colName +' like ''%a%'' or'endset @sql = stuff(@sql,len(@sql)-1,2,'')
    exec (@sql)
    自己试一下吧.