oracle中substr和instr的用法

来源:互联网 发布:linux在目录中创建目录 编辑:程序博客网 时间:2024/04/29 03:43

网上搜集的,整理下

 

1、substr(string string, int a, int b)
参数1:string 要处理的字符串
参数2:a 截取字符串的开始位置(起始位置是0)
参数3:b 截取的字符串的长度(而不是字符串的结束位置)
例如:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 1, 3); //返回:ABC,截取从A开始3个字符 ,这里开始是1和3返回都是一个字符串
substr("ABCDEFG", 1, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。

2、substr(string string, int a)
参数1:string 要处理的字符串
参数2:a 可以理解为从索引a(注意:起始索引是0)处开始截取字符串,也可以理解为从第 (a+1)个字符开始截取字符串。
例如:
substr("ABCDEFG", 0); //返回:ABCDEFG, 截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符

 

 

 

 

1.instr

 

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。

 

语法如下:instr( string1, string2 [, start_position [, nth_appearance ] ] )

 

string1 源字符串,要在此字符串中查找。

string2 要在string1中查找的字符串.

start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

 

nth_appearance 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

 


注意:

如果String2在String1中没有找到,instr函数返回0.

 

应用于:

  • Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

举例说明:

select instr('abc','a') from dual;    -- 返回 1
select instr('abc','bc') from dual; -- 返回 2
select instr('abc abc','a',1,2) from dual; -- 返回 5
select instr('abc','bc',-1,1) from dual; -- 返回 2
select instr('abc','d') from dual; -- 返回 0

原创粉丝点击