Oracle SQL提取两个点之间的字符串(包含点)
Oracle SQL提取两点间含点的字符串解决方案
方法一:使用正则表达式函数REGEXP_SUBSTR
这是最简洁的方式,利用正则匹配包含首尾点的中间部分:
SELECT REGEXP_SUBSTR('abc.musadeneme.dce', '\..*\.', 1, 1) AS target_str FROM dual;
正则说明:
\.:匹配字符串中的点(正则中点是特殊字符,需用反斜杠转义).*:匹配两点之间任意长度的任意字符- 最后一个
\.:匹配结尾的点
执行后会返回.musadeneme.,也就是你需要的结果。
方法二:使用INSTR+SUBSTR组合(无正则依赖)
如果系统禁用正则或者更倾向于基础字符串函数,可以用位置截取的方式:
SELECT SUBSTR( 'abc.musadeneme.dce', -- 定位第一个点的位置 INSTR('abc.musadeneme.dce', '.'), -- 计算截取长度:第二个点位置 - 第一个点位置 + 1(包含首尾点) INSTR('abc.musadeneme.dce', '.', 1, 2) - INSTR('abc.musadeneme.dce', '.') + 1 ) AS target_str FROM dual;
逻辑说明:
INSTR('abc.musadeneme.dce', '.')得到第一个点的位置(这里是4)INSTR('abc.musadeneme.dce', '.', 1, 2)得到第二个点的位置(这里是15)- 截取从位置4开始,长度为15-4+1=12的字符串,正好是
.musadeneme.
内容的提问来源于stack exchange,提问作者Musa Keskin
相关产品推荐
相关产品推荐

