Oracle学习——实用SQL(第三篇)

本文深入解析Oracle数据库中substr()和instr()函数的高级用法,通过实例展示如何精确截取字符串和定位特定字符,特别关注substr()与instr()结合在JSON数据处理中的应用。

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


substr()函数和instr()函数的理解

(一)、substr()

如下图所示:
在这里插入图片描述
例子:

select substr('abcdefg12345',1,5) as 输出值 from dual;
--输出结果为:abcde

select substr('abcdefg12345',0,5) as 输出值 from dual;
--输出结果为:abcde
--前两个语句说明0和1都表示截取的位置为第一个字符

select substr('abcdefg12345',4,6) as 输出值 from dual;
--输出结果为:defg12

select substr('abcdefg12345',-5,2) as 输出值 from dual;
--输出结果为:12

select substr('abcdefg12345',3) as 输出值 from dual;
--输出结果为:cdefg12345

select substr('abcdefg12345',-3) as 输出值 from dual;
--输出结果为:345

(二)、instr()

如下图所示:
在这里插入图片描述
例子:

select instr('12/42/56','/',1,1) from dual;
--输出结果为:3
select instr('12/42/56','/',7,1) from dual;
--输出结果为:0    查不到,则返回0
select instr('12/42/56','/',-1,1) from dual;
--输出结果为:6
select instr('12/42/56','/') from dual;
--输出结果为:3  默认‘/’第一次出现的位置
select instr('12/42/56','/4') from dual;'
--输出结果为:3

注: 空格也是字符,instr()函数的起始位置不能为0,否则返回结果为0;

(三)、substr()与instr()结合使用

字段值为json形式,变更其中某个值

SELECT substr('{"CSZDMC1":"","CSZDMC2":"12021405100906","CSZDMC":"123456","CSZDMC3":"1"}',
              instr('{"CSZDMC1":"","CSZDMC2":"12021405100906","CSZDMC":"123456","CSZDMC3":"1"}', ',', 1, 2) + 11,
              instr('{"CSZDMC1":"","CSZDMC2":"12021405100906","CSZDMC":"123456","CSZDMC3":"1"}',  ',', 1, 3) 
              - instr('{"CSZDMC1":"","CSZDMC2":"12021405100906","CSZDMC":"123456","CSZDMC3":"1"}', ',', 1, 2) - 12)
FROM DUAL;
--查询结果为:123456
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值