您的位置:首页 > 数据库

SQL 查询 逗号 分割的属性值

2016-03-17 18:46 239 查看
在开发过程中,经常会碰到多个属性值存储到一个字段中。这时候查询会麻烦一点,例如下面这样:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: