Oracle中常用的函数解析--持续更新

博客主要介绍了字符串类的两个函数。substr函数为字符截取函数,有两种格式,可按指定位置和长度截取字符串;instr函数是字符查找函数,也有两种格式,能返回目标子串在源字符串中出现的位置,找不到则返回0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、字符串类:

(1)substr函数 (字符截取函数)

格式1: substr(string str, int start, int length);

str:源字符串

start:字符串截取的开始位置,注:当start等于0或者1时,都是从第一位开始截取

length:要截取的字符串的长度

格式2:substr(string str, int start) ;

str:源字符串

start:截取从start位置开始到末尾的子串

返回值:截取的目标子串。

可以参考下面的示例:

 1、select substr('HelloWorld',0,3) value from dual; 
//返回结果:Hel,截取从“H”开始3个字符

 2、select substr('HelloWorld',1,3) value from dual; 
//返回结果:Hel,截取从“H”开始3个字符

 3、select substr('HelloWorld',2,3) value from dual; 
//返回结果:ell,截取从“e”开始3个字符

 4、select substr('HelloWorld',0,100) value from dual; 
//返回结果:HelloWorld,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。

 5、select substr('Hello World',5,3) value from dual; 
//返回结果:o W ,中间的空格也算一个字符串,结果是:o空格W

 6、select substr('HelloWorld',-1,3) value from dual; 
//返回结果:d ,从后面倒数第一位开始往后取1个字符,而不是3个。

 7、select substr('HelloWorld',-3,3) value from dual; 
//返回结果:rld ,从后面倒数第三位开始往后取3个字符

8、select substr('HelloWorld',-4,3) value from dual; 
//返回结果:orl ,从后面倒数第四位开始往后取3个字符

 

(2)instr()函数(字符查找函数)

格式1:instr( string source, string target )   

source:源字符串

target:目标字符串

格式2:instr( string source, string target [, start_position [, nth_appearance ] ] )  

source:源字符串,字符串可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB等类型

target:目标字符串

start_position:可选的,匹配的开始位置。如果省略,则默认为1

nth_appearance:可选的, 子串的第n个出现。 如果省略,则默认为1。

返回值:目标子串在源字符串中出现的位置。若找不到目标子串,则返回0。

可以参考下面的示例:

1 select instr('helloworld','l') from dual; 
//返回结果:3    默认第一次出现“l”的位置

2 select instr('helloworld','l',3,2) from dual;  
//返回结果:4    也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置

3 select instr('helloworld','l',4,2) from dual;  
//返回结果:9    也就是说:在"helloworld"的第4(l)号位置开始,查找第二次出现的“l”的位置

4 select instr('helloworld','l',-1,1) from dual; 
//返回结果:9    也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置

5 select instr('helloworld','l',-2,3) from dual; 
//返回结果:3    也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第三次出现的“l”的位置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值