Oracle instr 及 like

原文: http://www.cnblogs.com/crazyjava/archive/2012/10/31/2748202.html

instr(string1,string2[,start_position[,nth_appearence]])

string1:要在此字符串中查找。

string2:要在string1中查找的字符串。

start_position:从string1开始查找的位置。可选,默认为1,正数时,从左到右检索,负数时,从右到左检索。

nth_appearence:查找第几次出现string2。可选,默认为1,不能为负。

注:如果没有查找到,返回0。

例如:

select instr(‘abcd‘,‘a‘) from dual;  --返回1
select instr(‘abcd‘,‘c‘) from dual;  --返回3
select instr(‘abcd‘,‘e‘) from dual;    --返回0

该函数可以用于模糊查询以及判断包含关系:

例如:

① select code, name, dept, occupation  from staff  where instr(code, ‘001‘) > 0;

  等同于

  select code, name, dept, occupation  from staff  where code like ‘%001%‘ ;

② select ccn,mas_loc from mas_loc where instr(‘FH,FHH,FHM‘,ccn)>0;

  等同于

  select ccn,mas_loc from mas_loc where ccn in (‘FH‘,‘FHH‘,‘FHM‘);

另一篇文章:

表中将近有100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。

SQL> set timing on
SQL> select count(*) from t where instr(title,’oracle’)>0;

COUNT(*)
———-
5478

Elapsed: 00:00:11.04
SQL> select count(*) from t where title like ‘%oracle%’;

COUNT(*)
———-
5478

Elapsed: 00:00:31.47

注:

instr(title,‘oracle’)>0 相当于like

instr(title,‘oracle’)=0 相当于not like

时间: 2024-10-23 13:03:10

Oracle instr 及 like的相关文章

Oracle instr用法

1:实现indexOf功能,.从第1个字符开始,搜索第1次出现子串的位置 select instr('->Oracle instr用法','Oracle instr用法',1,1) as i from dual; select instr('oracle','or') as i from dual; 2:实现like功能 instr(name,'aa’)>0 相当于like instr(name,'aa’)=0 相当于not like

oracle instr函数用法和(oracle 用instr 来代替 like)

最近项目中出现oracle instr函数,于是在网上找了一下关于它的资料. Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR',在字符串中查找'OR',从第三个字符位置开始查找"OR"

oracle instr函数使用

INSTR(源字符串, 目标字符串, 起始位置, 匹配序号) :在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始到字符的结尾就结束. 一.语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 1>参数分析:  ①string1:源字符串,要在此字符串中查找. ②string2:要在string1中查找的字符串.  ③start_position

oracle instr函数详解

INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. 语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串中查找. string2 要在string1中查找的字符串. start_position 代表strin

oracle instr 函数的使用

在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法:instr(sourceString,destString,start,appearPosition) instr('源字符串' , '目标字符串' ,'开始位置','第几次出现') 其中sourceString代表源字符串: destString代表要从源字符串中查找的子串: start代表查找的开始位置,这个参数可选的,默认为1: a

Oracle instr()函数替代like实现模糊查询

需要查询One Table中的Message栏位中的值是否包含在Two Table的Message栏位中: select a.Message,b.Message from One a , Tow b where instr(a.Message,b.Message)>0;(b.Message包含在a.Message中) instr(title,'Oracle')>0 相当于like instr(title,'Oracle')=0 相当于not like

oracle instr函数

语法:instr( fatherstr, sonstr [, start_position [, matchtimes ] ] ) fatherstr:父字符串.要在此字符串中查找子字符串的位置. sonstr:要在fatherstr中查找的字符串. start_position:代表从fatherstr開始查找的的開始位置.此參数可选,假设省略默觉得1. 字符串索引从1開始.假设此參数为正.从左到右開始检索.假设此參数为负,从右到左检索, 返回要查找的子字符串在父字符串中的開始索引. matc

【原创】oracle函数INSTR的MySQL实现

一个迁移项目遇到的,MySQL的instr函数只能查找子串是否在父串中,没法按照出现的次数进行查找. 这里我自己写了一个,以便迁移.当然我这里仅仅针对的是迁移,可能没有完全实现原有函数的细节. Oracle 里用了几次如下的调用, SQL> select instr('This is belong to you, but not to me.','to',1,1) as pos from dual;                  POS                            

Oracle 中, 使用 Instr 函数 替换 OR

简述 今天在写 sql时遇到一个情况,表 A中的 ID 是按照 TREE结构存储的.现在需要和表 B中的 NODE_ID连接,取出 B中 NODE_ID可以和 A中任意一个 level的 NODE_ID连接的信息.但是表 B中的 NODE_ID 具体对应到表 A中哪个 level是未知的.对此,最先想到使用的是 OR运算,但是由于效率太低,速度很慢,后来使用 INSTR代替,查询速度得到明显提高. 表结构 表 A - A_SEQ_ID, LVL1_NODE_ID, LVL2_NODE_ID,LV