ORACLE 字符串处理 正则截取

前几天碰上个小需求,截取url中的产品类目信息。产品类目的url如下(域名略)
/women-c2
/women-n25?jsort=1234

简单观察下,就是从/开始,截到-c/-n + 数字为止。
以前这种需求都是用substr加instr搞定,结果这次发现不行了,原因是因为这次截止字符不确定。考虑了下,用正则先把截止字符解析出来
select regexp_substr(request_uri,'(-c\d+|-n\d+)',1,1) from dual
找到截止字符的位置,一切就好办了,用以前的办法搞定
select  substr(request_uri,2,instr(request_uri,regexp_substr(request_uri,'(-c\d+|-n\d+|-b\d+)',1,1),1,1)-2) from dual


补充下oracle里字符串处理

Oracle trim函数

trim(trailing 'h' from 'haahbbhh') 截断后面的h,最后得出haahbb

Oracle instr函数

从一个字符串中查找指定子串的位置

从字符串'yuechaotianyuechao'的第一个位置开始,查找第一个出现子串'ao'出现的位置。

SQL>select instr('yuechaotianyuechao','ao') position from dual; 返回6

从第7个字符开始搜索

SQL> select instr('yuechaotianyuechao','ao', 7) position from dual  返回17

从第1个字符开始,搜索第2次出现子串的位置

SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;  返回17




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值