EsgynDB新版本之instr函数

EsgynDB 2.5版本更新,对instr函数进行了升级,新增支持三个及四个参数的形式,允许用户指定起始位置及匹配序号,更灵活地查询字符串中特定字符的出现位置。

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

在EsgynDB2.5版本以前,虽然已经支持了instr函数,但只支持两个参数的方式,即查询匹配某个字符串出现的位置(默认首次)。如下,

>>select instr('aaa#bbb#ccc','#') from dual;

(EXPR)    
----------

         4

--- 1 row(s) selected.

此时,instr函数也可以用position函数代替,如,

>>select position('#' in 'aaa#bbb#ccc') from dual;

(EXPR)    
----------

         4

--- 1 row(s) selected.

无论是instr函数,或是position函数,都只能获取匹配字符在字符串中第一次出现的位置,但如果想获取第二个#或者第三个第四个#出现的位置就不能做到了。
在即将到来的EsgynDB 2.5的版本里面,我们对instr函数做了改进,不仅可以支持原来的两个参数的方式,也支持三个、四个参数的方式。

格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串)

格式二:instr( string1, string2 , start_position )   /   instr(源字符串, 目标字符串, 起始位置)

格式三:instr( string1, string2 , start_position , nth_appearance )   /   instr(源字符串, 目标字符串, 起始位置, 匹配序号)

格式四:instr( string2  in string1 )   /   instr(源字符串, 目标字符串, 起始位置, 匹配序号)

解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

下面我们仍然用上述例子来试验四个参数的情况下查询第N个匹配的字符串的位置,

//从第1位开始查询第1个#的位置
>>select instr('aaa#bbb#ccc','#',1,1) from dual;

(EXPR)    
----------

         4

--- 1 row(s) selected.
//从第1位开始查询第2个#的位置
>>select instr('aaa#bbb#ccc','#',1,2) from dual;

(EXPR)    
----------

         8

--- 1 row(s) selected.
//从第5位开始查询第1个#的位置
>>select instr('aaa#bbb#ccc','#',5,1) from dual;

(EXPR)    
----------

         8

--- 1 row(s) selected.
//IN方式,查找第一个匹配,相当于position函数
>>select instr('#' in 'aaa#bbb#ccc') from dual;

(EXPR)    
----------

         4

--- 1 row(s) selected.
//三个参数,表示查找从第N位开始的第一个匹配位置
>>select instr('aaa#bbb#ccc','#',5) from dual;

(EXPR)    
----------

         8

--- 1 row(s) selected.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值