我想從匹配的正則運算式中捕獲最后一個單詞。這是我的查詢。
SELECT REGEXP_SUBSTR(
'The;quick;brown;fox;jumps;over;the;lazy;dog','^([^;]*;){5}([^;]*)') REF
FROM
DUAL
Desired result: over
Actual Result: The;quick;brown;fox;jumps;over
我可以做子正則運算式,但如果有數百萬條記錄,它會影響性能......
嵌套正則運算式
SELECT REGEXP_SUBSTR(REGEXP_SUBSTR(
'The;quick;brown;fox;jumps;over;the;lazy;dog',
'^([^;]*;){5}([^;]*)'),'[^;]*$') REF
FROM
DUAL
uj5u.com熱心網友回復:
如果您擔心性能(因為它們很慢),請不要使用正則運算式,只需使用普通的字串函式:
SELECT SUBSTR(
value,
INSTR(value, ';', 1, 5) 1,
INSTR(value, ';', 1, 6) - INSTR(value, ';', 1, 5) - 1
) AS DATA
FROM table_name;
如果您確實想使用正則運算式,則只需提取捕獲組的值:
SELECT REGEXP_SUBSTR(value, '(.*?);', 1, 6, NULL, 1) AS data
-- ^ Start from
-- ^ Occurrence
-- ^ Capturing group to extract
FROM table_name;
其中,對于樣本資料:
CREATE TABLE table_name ( value ) AS
SELECT 'The;quick;brown;fox;jumps;over;the;lazy;dog' FROM DUAL;
兩個輸出:
資料 超過
db<>在這里小提琴
uj5u.com熱心網友回復:
如果要使用,REGEXP_SUBSTR則將其第四個引數用于您要查找的事件:
SELECT REGEXP_SUBSTR(
'The;quick;brown;fox;jumps;over;the;lazy;dog',
'[^;] ',
1,
6) AS ref
FROM dual;
檔案:https : //docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/REGEXP_SUBSTR.html#GUID-2903904D-455F-4839-A8B2-1731EF4BD099
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321136.html
