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

WBOY
Lepaskan: 2016-06-23 14:17:28
asal
1879 orang telah melayarinya

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%'
Salin selepas log masuk
Salin selepas log masuk

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

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

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

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

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

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

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!