我有下面的数据字符串,如何使用oracle正则表达式单独获取数字最后两个字符总是“RC”或“RN”。如果找不到数字返回 0
1AEABCRC
1AEABC1RC
1AEABC1RN
1AEABC2RN
答案 0 :(得分:1)
select
nvl(regexp_substr(column_name, '(\d*)(RC|RN)$', 1, 1, null, 1), 0)
from table_name;
答案 1 :(得分:0)
您可以尝试这样的事情:
select nvl(regexp_replace(regexp_substr(v, '\d+(RC|RN)$'), '(\d+)(RC|RN)$', '\1'), 0)
from t;
答案 2 :(得分:0)
这似乎有效。 Dunno如果您想将数字作为数字或愿意作为char使用,但是:
select nvl(substr(regexp_replace('1AEABCRC','^1[A-Z]+'),1,1),to_char(0,'9')) from dual;
select nvl(substr(regexp_replace('1AEABC1RC','^1[A-Z]+'),1,1),to_char(0,'9')) from dual;
select nvl(substr(regexp_replace('1AEABC1RN','^1[A-Z]+'),1,1),to_char(0,'9')) from dual;
select nvl(substr(regexp_replace('1AEABC2RC','^1[A-Z]+'),1,1),to_char(0,'9')) from dual;
当然,您可以使用列名或变量或某些内容替换字符串文字。如果数字变为两位数,显然不会起作用。