我想根据几个关键字模糊查询[公司名],比如带有'北京','福建','山东'这帮个词的的公司都查出来,有点像百度谷歌那样的,但关键字数量不定,
我想到的办法是根据关键字数量动态生成Where那段内容,比如:
select * from companyInfor where name like '%北京%' or name like '%福建%' or name like '%山东%'
不知是否还有更方便的办法呢?谢谢!

解决方案 »

  1.   


    --这样?
    select * from companyInfor where name like '%[北京福建山东]%' 
      

  2.   


    select * from companyInfor where name CHARINDEX(','+name+',' ,','+'北京,福建,山东'+',')>0 
      

  3.   

    好像行不通,提示这个:
    第 1 行: 'CHARINDEX' 附近有语法错误。
      

  4.   


    select * from companyInfor where CHARINDEX(','+name+',' ,',北京,福建,山东,')>0 
      

  5.   

    select * from companyInfor where CHARINDEX(','+name+',' ,','+'北京,福建,山东'+',')>0 
      

  6.   

    2楼的方法还可以,组合出来的SQL要短一些
      

  7.   

    create proc 储存过程名
    (
        @company varchar(100)=null)
    as
       begin
       select * from companyInfor where name like '%@company%'
       return -1
       end
       go
    然后从前台传参数调用储存过程,行不行?
      

  8.   


    弄懂了,你的NAME是CHAR类型是不是????我刚才设成CHAR类型的也不行,因为固定了!!
    CREATE TABLE TBTEST(COMPANYNAME CHAR(10),STATE VARCHAR(10))
    INSERT TBTEST
    SELECT 'AAAAARE','北京'UNION ALL
    SELECT 'bbbFDEb','上海'UNION ALL
    SELECT 'AAACCCAA','福建'UNION ALL
    SELECT 'AADDDAAA','山东'
    DROP TABLE TBTEST
    select * from TBTEST where CHARINDEX(','+STATE+',' ,',北京,福建,山东,')>0 COMPANYNAME STATE      
    ----------- ---------- 
    AAAAARE     北京
    AAACCCAA    福建
    AADDDAAA    山东(所影响的行数为 3 行)
      

  9.   

    select * from TBTEST where CHARINDEX(','+RTRIM(LTRIM(STATE))+',' ,',北京,福建,山东,')>0 
    这样一定行了
      

  10.   


    CREATE TABLE TBTEST(COMPANYNAME CHAR(10),STATE CHAR(10))
    INSERT TBTEST
    SELECT 'AAAAARE','北京'UNION ALL
    SELECT 'bbbFDEb','上海'UNION ALL
    SELECT 'AAACCCAA','福建'UNION ALL
    SELECT 'AADDDAAA','山东'select * from TBTEST where CHARINDEX(','+rtrim(ltrim(STATE))+',' ,','+'北京,福建,山东'+',')>0 
    COMPANYNAME STATE      
    ----------- ---------- 
    AAAAARE     北京      
    AAACCCAA    福建      
    AADDDAAA    山东      (所影响的行数为 3 行)
      

  11.   

    不行啊,我的意思的模糊查询哦,比如公司名为北京市XX公司,就查不出来了,上面这个只能实现精确查询,如果是精确查询,就不用这么麻烦了,直接IN了
      

  12.   


    那只能是按你的了,呵呵!!!LIKE