前提:
管理员在城市"北京"下录入对应"北京"的关键字"首都,城市".
数据库存放的数据格式为:
1   北京   北京URL   类型7  首都
2   北京   北京URL   类型7  城市
3   北京   北京URL   类型7  天气
录入几个关键词就存在几条记录
操作:
用户在搜索的时候如果在文本框中输入:"首都,城市"
就去数据库中查找对应着"首都"和"城市"的数据,并且要完全对应的数据,
在上面的数据中查到
1   北京   北京URL   类型7  首都
2   北京   北京URL   类型7  城市
然后取其中一条数据就行
问题:
试了好几种办法就是不行,希望大家指点一下,谢谢!

解决方案 »

  1.   

    -- 做类似这样的处理
    declare @search nvarchar(4000)
    set @search = N'首都,北京'
    select * from tb
    where
      (
        ',' + col1 + ',' like '%,' + @search + ',' or 
        ',' + col2 + ',' like '%,' + @search + ',' or 
        ',' + col3 + ',' like '%,' + @search + ',' or 
        ',' + col4 + ',' like '%,' + @search + ',' or 
        ',' + col5 + ',' like '%,' + @search + ','
      ) and (
      (
        ',' + col1 + ',' like '%,' + @search + ',' or 
        ',' + col2 + ',' like '%,' + @search + ',' or 
        ',' + col3 + ',' like '%,' + @search + ',' or 
        ',' + col4 + ',' like '%,' + @search + ',' or 
        ',' + col5 + ',' like '%,' + @search + ','
      )
      

  2.   

    可以考虑根据输入动态上述条件处理语句.
    也可以考虑按逗号分拆用户的输入, 生成类似这样的条件语句
    where
      N'首都' in(col1, col2, col3, col4, col5 and
      N'北京' in(col1, col2, col3, col4, col5 
      

  3.   

    谢谢 zjcxc
    我现在就是拆分了关键字 
    也是动态生成传入的  我试了你第二个方法
    是where N'首都' in (KeyWordName) and  N'北京' in (KeyWordName)  吗?这样好像也没有数据
      

  4.   

    因为要用拆开的多个关键字去匹配对用着的数据  用AND 好像是不行  
    帮我再看下  谢谢了
      

  5.   

    1   北京   北京URL   类型7  首都
    2   北京   北京URL   类型7  城市
    3   北京   北京URL   类型7  天气
    4   上海   上海URL   类型7  城市
    5   杭州   杭州URL   类型7  城市要查询的关键词是"首都,城市"  我拆成了"首都"和"城市"...这样应该得到的数据是
    1   北京   北京URL   类型7  首都
    2   北京   北京URL   类型7  城市其他有单独匹配数据的得不到
      

  6.   

    看错了查询结果, 应该是:where N'首都' in (KeyWordName) or  N'北京' in (KeyWordName) 然后判断出来结果的记录数和关键字的个数是否匹配.