SQL正则表达式用法

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

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;
#SQL面试##笔试题目##MySQL#
全部评论
点赞 回复 分享
发布于 2022-05-17 15:26

相关推荐

iYellow:后面没出的那几年基本上按出生人口预测的,属实是直接传播焦虑了,尤其是后边那几年属于全都读大学了
牛客在线求职答疑中心
点赞 评论 收藏
分享
白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务