壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 657|回复: 3

[二次开发] instr()函数,特殊用法,代替like,in

  [复制链接]
发表于 2012/8/20 17:17:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
--created by   : wanglin
--created date : 2012-08-20
--created purpose: instr()函数,特殊用法,代替like,in

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

例如:

instr("efabcdefg","e")的结果当然是1
instr(2,"efabcdefg","e")的结果就是7
instr(5,"efabcdefg","a")的结果就是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 '%001%' ;

代替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
发表于 2012/8/20 22:31:24 | 显示全部楼层
{:soso_e179:}   沙发 学习
发表于 2012/8/20 22:44:08 | 显示全部楼层
学习{:soso_e185:}
发表于 2012/8/21 09:50:17 | 显示全部楼层
剛剛試了一下,看起來是不會走Index(wip_entity_name是有Index的)不知道你的環境是怎樣?

SELECT *
  FROM wip_entities
WHERE INSTR (wip_entity_name, '%EE%') > 0;

Plan
SELECT STATEMENT  CHOOSECost: 2,710  Bytes: 15,665,000  Cardinality: 156,650         
        1 TABLE ACCESS FULL WIP.WIP_ENTITIES Cost: 2,710  Bytes: 15,665,000  Cardinality: 156,650  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 19:31 , Processed in 0.013928 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表