17,086
社区成员
发帖
与我相关
我的任务
分享
with t as
(select 's2s[aa]{xx}' str
from dual
union all
select 's..s2s[aa]' str
from dual
union all
select 's2s{xx}' str
from dual
union all
select 'xxs2?s' str
from dual)
select substr(str,
1,
decode(regexp_instr(str, '[\[|\{]'),
0,
length(str),
regexp_instr(str, '[\[|\{]') - 1))
from t;
CREATE OR REPLACE PROCEDURE idsp(item IN VARCHAR2) IS
v_bkt_pos NUMBER;
v_bce_pos NUMBER;
BEGIN
SELECT instr(item, '['), instr(item, '{') INTO v_bkt_pos, v_bce_pos FROM dual;
IF v_bkt_pos = 0
THEN
IF v_bce_pos = 0
THEN
dbms_output.put_line(item);
ELSE
dbms_output.put_line(substr(item, 1, v_bce_pos - 1));
END IF;
ELSE
dbms_output.put_line(substr(item, 1, v_bkt_pos - 1));
END IF;
END;
自己转成function吧。