数据库表设计如下
表对象是房屋信息
其中一个字段是baseService(基础服务设施,字符串类型)可多选,为了方便我让baseService字段录入1,2,3,4,5这样的字符串,其中1对应煤气/天然气,2对应暖气
然而当要搜索查询用到次字段时问题来了
如果我要搜索包含设施2,4,5的数据要怎么去搜索呢?例如三条数据中的baseService字段内容如下
1.“1,2,3,4,5”
2.“1,3,5”
3.“1,2,3”当我的搜索条件为baseService字段且要搜索包含“3,5”两项内容的数据要如何查询处理?搜索结果应为
1.“1,2,3,4,5”
2.“1,3,5”请大神提供解决方案数据库,查询匹配

解决方案 »

  1.   

    用正则表达式啊 请参考 http://dev.mysql.com/doc/refman/5.1/zh/regexp.html
      

  2.   

    http://blog.csdn.net/acmain_chm/article/details/4141864
    REGEXP 正则的实现两个字符串组的匹配。
    最近MySQL版块中类似问题出现得比较多。总结了一下。 由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中。比如个人兴趣,有时候我们设计表为create table members (uid int primary key,uname varchar(20),hobby varchar(100));表中内容如下mysql> select * from ...
      

  3.   

    貌似只能把3,5拆了  然后 where col like '%,3,%' and col like '%,5,%'
      

  4.   

    SELECT baseService FROM 表名 where  INSTR(baseService,'3')>0 and INSTR(baseService,'5')>0 ;
      

  5.   

    SELECT * FROM tb where find_in_set('3',baseService)>0 and find_in_set('5',baseService)>0;