我有以下数据字符串,如何使用 oracle 正则表达式单独获取数字最后两个字符始终是“RC”或“RN”。如果找不到数字,则返回 0。
1AEABCRC
1AEABC1RC
1AEABC1RN
1AEABC2RN
我有以下数据字符串,如何使用 oracle 正则表达式单独获取数字最后两个字符始终是“RC”或“RN”。如果找不到数字,则返回 0。
1AEABCRC
1AEABC1RC
1AEABC1RN
1AEABC2RN
select
nvl(regexp_substr(column_name, '(\d*)(RC|RN)$', 1, 1, null, 1), 0)
from table_name;
你可以尝试这样的事情:
select nvl(regexp_replace(regexp_substr(v, '\d+(RC|RN)$'), '(\d+)(RC|RN)$', '\1'), 0)
from t;
这似乎有效。不知道您是否希望将数字作为数字或愿意将其用作字符,但是:
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;
当然,您可以用列名或变量等替换字符串文字。显然,如果数字达到两位数,将不起作用。