截取oracle字符串中的数字字符串截取几段方法
⽅法⼀:
如果Oracle版本不是太低的话,使⽤正则表达式函数 REGEXP_SUBSTR 处理。
REGEXP_SUBSTR有5个参数,分别是:
第⼀个是输⼊的字符串
第⼆个是正则表达式
第三个是标识从第⼏个字符开始正则表达式匹配。(默认为1)
第四个是标识第⼏个匹配组。(默认为1)
第五个是是取值范围:
i:⼤⼩写不敏感;
c:⼤⼩写敏感;
n:点号 . 不匹配换⾏符号;
m:多⾏模式;
x:扩展模式,忽略正则表达式中的空⽩字符。
例如:
SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+') FROM DUAL;
--返回123
SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',6) FROM DUAL;
--返回3
SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',7) FROM DUAL;
--返回456
SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+',1,2) FROM DUAL;
-
-返回456
⽅法⼆:
使⽤⽅法⼀只能截取其中其中的⼀段数字,如果想截取字符串中的所有数据,可以使⽤translate函数实现,具体使⽤⽅法如下:
select translate('&str' , '0123456789' || '&str' , '0123456789') from dual;
translate函数语法是TRANSLATE(string,from_str,to_str),
其功能是返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的⼀个超集。如果 from_str ⽐ to_str 长,那么在 from_str 中⽽不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。