如何在字符串型字段查询匹配数据,例如字段保存数据为“1,2,3,4”,如何查询此字段包含“2,4”的数据

纯流氓 2013-03-22 02:31:07
数据库表设计如下
表对象是房屋信息
其中一个字段是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”

请大神提供解决方案
...全文
429 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2013-03-27
  • 打赏
  • 举报
回复
如果要方便查询: 1.“1,2,3,4,5”-> 1. 1 1  2 1 3 1 4 1 5
scoutlin 2013-03-26
  • 打赏
  • 举报
回复
SELECT * FROM tb where find_in_set('3',baseService)>0 and find_in_set('5',baseService)>0;
纯流氓 2013-03-22
  • 打赏
  • 举报
回复
可以明确的说表设计是应该没问题的,因为表字段设计是抄袭搜房网的,搜房网在发布房源信息的时候,有一项配备设施(配备设施可以有多个,也可以有一个或者没有,而且配备设施只是列出现在已知的设备,例如现在已知设备有:暖气,电梯,露台,煤气/天然气,以后发展了发现还有其他设备例如车位,花园等)我们不可能每个设备去给一个字段,所以就都包含在配备设施这一个字段里面用类似“1,2,3,4”这样的字段保存。1对应暖气,2对应电梯,3对应露台以此推算。现在要问的难点在于搜索上,如何在搜索暖气和露台的时候把“1,2,3,4”这条数据找出来。请考虑百万级以上数据搜索情况的性能问题。 如果有更好的表设计方案,请提供具体解决方案。
ACMAIN_CHM 2013-03-22
  • 打赏
  • 举报
回复
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 ...
Neptune_yin 2013-03-22
  • 打赏
  • 举报
回复
dhc_1229 2013-03-22
  • 打赏
  • 举报
回复
这个表设计有问题
alice_lee_32 2013-03-22
  • 打赏
  • 举报
回复
SELECT baseService FROM 表名 where INSTR(baseService,'3')>0 and INSTR(baseService,'5')>0 ;
WWWWA 2013-03-22
  • 打赏
  • 举报
回复
引用 3 楼 rucypli 的回复:
貌似只能把3,5拆了 然后 where col like '%,3,%' and col like '%,5,%'
没错,那么用正则 要么拆分3,5,楼主是要2个都存在的准确查询
rucypli 2013-03-22
  • 打赏
  • 举报
回复
貌似只能把3,5拆了 然后 where col like '%,3,%' and col like '%,5,%'

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧