关于instr 与in like
博客专区 > 冰暝 的博客 > 博客详情
关于instr 与in like
冰暝 发表于1年前
关于instr 与in like
  • 发表于 1年前
  • 阅读 9
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 关于instr 与in like

instr()返回值是目标字符(串)在母字符里第一次出现的位置,故而是整数。

例如:

instr("efabcdefg","e")的结果当然是1 instr("efabcdefg","e",2)的结果就是7 instr("efabcdefg","a",5)的结果就是0 instr("efabcdefg","k")的结果也是0

instr是内置函数,他是会走索引的,性能好。

like不一定:like '%iii%'是不走索引的,like 'ik%'走索引。

例如: 代替like: SELECT code, name, dept, occupation FROM staff WHERE instr(code, '001') > 0; 等同于 SELECT code, name, dept, occupation FROM staff WHERE code LIKE '1%' ;

代替in: SELECT code , name , dept, occupation FROM staff WHERE code IN ('A10001','A10002'); 等同于 SELECT code , name , dept, occupation FROM staff WHERE instr('A10001,A10002',code)>0

但是要注意,如果要搜索的字符串不符合规范 是000 那么 instr('A10001,A10002',code)>0 肯定是大于0 而WHERE code IN ('A10001','A10002');是不成立的,所以在使用的时候一定要确认要搜索的字符串是否符合逻辑规则

标签: instr in like
共有 人打赏支持
粉丝 5
博文 73
码字总数 21360
×
冰暝
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: