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

WBOY
Libérer: 2016-06-23 14:17:28
original
1911 Les gens l'ont consulté

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%'
Copier après la connexion
Copier après la connexion

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

性能就不怎样了,因为不能使用索引写作这样才可以使用索引(如果有的话)select `id` from `table`  where  `flag` like '1%'
Copier après la connexion
Copier après la connexion

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

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

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

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

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!