SQL 查询 逗号 分割的属性值

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值