今天在乙個技術討論群裡有人問了乙個問題,@我了一下,我就看了一眼。問題給了乙個字串,字串裡有數字有字母有特殊符號,需求是取該字串中連續的數字。要求用正規表示式。我對正規表示式也不是精通,一知半解。就幫他看了一下,想了乙個思路:
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;
不知道能不能直接使用正規表示式,有興趣的可以試一下~~
正規表示式 開發常用的正規表示式
正規表示式是一種用來進行文字匹配的工具,其語法優美簡潔。在開發中,查詢 對比以及匹配字串是家常便飯的業務,通過正規表示式我們將這些業務描述成某些需求規則,來讓我們的 更美觀 實用。例如我們要驗證使用者輸入的密碼長度是否滿足6 18位的長度,新手最常見的驗證方式是判斷輸入的密碼長度 return te...
oracle 正規表示式
with temp as select br.777 1 a from dual union all select bs.6 175 a from dual union all select d.140 supplement 1 a from dual union all select e.191 ...
oracle正規表示式
在資料庫可直接執行下面語句,但在程式中不能執行,regexp like t.ipaddress,25 0 5 2 0 4 0 9 01 0 9 0 9 25 0 5 2 0 4 0 9 01 0 9 0 9 報錯有特殊字元 在句末再加乙個 改為 regexp like t.ipaddress,25 ...