博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle开发中的正则表达式
阅读量:7078 次
发布时间:2019-06-28

本文共 880 字,大约阅读时间需要 2 分钟。

今天在一个技术讨论群里有人问了一个问题,@我了一下,我就看了一眼。问题给了一个字符串,字符串里有数字有字母有特殊符号,需求是取该字符串中连续的数字。要求用正则表达式。我对正则表达式也不是精通,一知半解。就帮他看了一下,想了一个思路:

1、先找到第一个数字出现的位置;

2、从第一个数字的位置开始,找到第一个非数字出现的位置;

3、然后从第一个出现数字的位置开始截取字符,截取到第一个非字符的位置

根据以上思路写了一个函数如下:

 create or replace  function fc_get_number_lx(i_str in varchar2) return varchar2 is

  
    v_num1 number;
    v_num2 number;
    v_str  varchar2(1000);
  begin
  
    select regexp_instr(i_str, '\d', 1, 1) into v_num1 from dual;
    select regexp_instr(i_str, '\D', v_num1, 1) into v_num2 from dual;
  
    select substr(i_str, v_num1, v_num2 - v_num1) into v_str from dual;

    return v_str;
  end;
end pkg_qcf_tool;

当然,也可以直接取值,不写成函数,把上面的函数内容直接写一条语句即可:

select substr(i_str, regexp_instr(i_str, '\d', 1, 1), regexp_instr(i_str, '\D', regexp_instr(i_str, '\d', 1, 1), 1) - regexp_instr(i_str, '\d', 1, 1)) into v_str from dual;select substr(i_str, v_num1, v_num2 - v_num1) from dual;

不知道能不能直接使用正则表达式,有兴趣的可以试一下~~

转载地址:http://uvjml.baihongyu.com/

你可能感兴趣的文章
About SOuP
查看>>
常用网络设备
查看>>
【Gamma】Scrum Meeting 4
查看>>
kafa单机版环境搭建
查看>>
kettle报错收集
查看>>
减少Linux 电耗 转自IBM
查看>>
DIOCP3-DIOCP1升级到DIOCP3
查看>>
SQL Server 中WITH (NOLOCK)浅析
查看>>
。一个通俗易懂的HMM例子
查看>>
freeswitch 挂断前执行脚本
查看>>
python packages prebuild for windows
查看>>
这样就算会了PHP么?-10
查看>>
远程调用WMI安装软件
查看>>
从零开始学习jQuery (七) jQuery动画-让页面动起来!
查看>>
asp.net 操作word
查看>>
SQL Server 权限管理
查看>>
郎意难坚,侬情自热(文/王路)
查看>>
Android SDK Manager 中如果没有相应的镜像ARM XX Image
查看>>
ASP.NET Web API的Controller是如何被创建的?
查看>>
Ant build xml中的各种变量解释
查看>>