截取ORACLE字符串中的数字

有一地址字段,内容如下:
东四北大街2巷4条133号
西四大街5条6633号
东单北大街5条3号院2号楼1单元23号

要取的字段是地址中“最后一个号字”前面的数字,该数字不定长

可以通过REGEXP_SUBSTR函数(配合正则表达式)来实现。
举例:
sql:select regexp_substr('CYJ8-ABC','[0-9]+') from dual;

以上sql执行结果:8;
备注:
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-10
设表名TAB、字段名DZ,保证最后的字是“号”,且地址号不超过4位9999。
语句如下:
SELECT REGEXP_SUBSTR(DZ,'[0-9]+',INSTR(DZ,'号',-1,1)-4,3) FROM TAB;本回答被提问者和网友采纳
相似回答