sql语句中能否直接把截取的字符串当作where条件

WBOY
發布: 2016-06-23 14:17:28
原創
1880 人瀏覽過

MySQL

例如这样的
select `id` from `table`  where  left(`flag`,1)=1;


我是有一串名为flag的标识用于表示该商品的各种属性, 10位数Int, 例如1100000000。
然后比如第一个数字1表示该商品价格区间在100-200元。
然后我想从表中搜出这个flag中取出第一个数字为1的商品
这个可以实现么, 仅仅用mysql

回复讨论(解决方案)

select `id` from `table`  where  left(`flag`,1)='1'

你的sql不就是吗??

晕。。。我感觉像是这样写的, 我试了几次没成功
是我where条件写错了

另外我想问下, 这样的sql语句性能怎么样呢

select `id` from `table`  where  left(`flag`,1)='1'

我想问下, 这样的sql语句性能怎么样呢

性能应该不怎么样 用到函数了

性能就不怎样了,因为不能使用索引写作这样才可以使用索引(如果有的话)select `id` from `table`  where  `flag` like '1%'
登入後複製
登入後複製

你这是要做商品筛选吧 用你这个方法你有没有想过以后要是增加属性 你以前的数据怎么办

性能就不怎样了,因为不能使用索引写作这样才可以使用索引(如果有的话)select `id` from `table`  where  `flag` like '1%'
登入後複製
登入後複製

是给flag字段加索引么, like的效率比left还高啊?

你这是要做商品筛选吧 用你这个方法你有没有想过以后要是增加属性 你以前的数据怎么办
我是在想比如商品有10个属性吧, 我flag字段中每个属性对应一个数字, 我现在只用到了前两个, 后边的我自动补0, 以后用到了再赋值。 您有什么更好的做分类的方法么

建一个属性表 aid 属性
一个商品表 gid
一个对应表 aid gid 对应边里aid 和gid 都可以索引 扩展属性的时候只要编辑属性表就可以了

只要 like 的匹配串左端不是变数,那么就可以使用到索引对于 1,2,11 所以后是 1,11,2like '1%' 总是会快速取出 1,11 的,因为他们聚集在一起
登入後複製

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!