SQL 查询 逗号 分割的属性值
2016-03-17 18:46
239 查看
在开发过程中,经常会碰到多个属性值存储到一个字段中。这时候查询会麻烦一点,例如下面这样:
like 效率可想而知。
现在通过两步来实现优化:
1、优化存储字符
存储时,所有字符串前后均加: “,”。即:
原来存储的数据存储形式:
修改后的数据存储形式:
2、优化查询方法:使用 locate
查询结果为: column 字段中包含 ,11, 的列表
如果存储形式不能修改,则可使用:
SELECT * FROM `#__product` WHERE `quality` LIKE '%,".$qid.",%' OR `quality` LIKE '".$qid.",%' OR `quality` LIKE '%,".$qid."' OR `quality` = '".$qid."'
like 效率可想而知。
现在通过两步来实现优化:
1、优化存储字符
存储时,所有字符串前后均加: “,”。即:
原来存储的数据存储形式:
1,11,22,33,4,9
修改后的数据存储形式:
,1,11,22,33,4,9,
2、优化查询方法:使用 locate
SELECT * FROM `bx_product` WHERE LOCATE(',11,',`column`)>0
查询结果为: column 字段中包含 ,11, 的列表
如果存储形式不能修改,则可使用:
SELECT * FROM `bx_product` WHERE LOCATE(',1,',concat(',',`column`,','))>0
相关文章推荐
- MYSQL企业常用架构与调优经验分享
- SQL Server 2016 RC0 安装(超多图)
- MongoDB的学习和使用
- MYSQL_SHOW STATUS_参数解释
- oracle恢复删除的数据
- mysql-5.6.24-winx64 在win10安装
- mongodb中的副本集搭建实践
- oracle sql语言模糊查询--通配符like的使用教程
- redis学习笔记3--基本操作1
- Linux+Nginx+Apache+Atlas+Mysql+Php+Redis 分部式部署详细版
- MariaDB · 版本特性 · MariaDB 的 GTID 介绍
- 学习数据库开发技术
- windows 安装redis
- VS2015连接Oracle数据库(转)
- ODAC with Oracle Developer Tools for Visual Studio
- oracle 全文检索实践
- 数据库完整性
- 关于附加数据库出错,请单击"消息"列的超链接的解决方案
- 数据持久化-CoreData、SQLite、FMDB
- sqlserver:表中一列为分隔符分割的多个人名,添加一列存储每个人名的id用逗号分割