>백엔드 개발 >PHP 튜토리얼 >sql语句中能否直接把截取的字符串当作where条件

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

WBOY
WBOY원래의
2016-06-23 14:17:281939검색

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 的,因为他们聚集在一起

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.