如何使用regex_substr函数提取字段的数字部分?

时间:2019-07-09 18:05:31

标签: sql regex oracle

如果值中存在数字,则需要在列(varchar)中提取值的数字部分。

ColumnA具有类似ABC,M365,J344,MCT等的值。

例如,我想从第二个位置检查整个值,例如,是否要提取一个数字,

a。 M365,从第二个位置365是一个数字,因此我想返回此子字符串。 b。 M3AB,从第二个位置开始,3AB不是数字,所以我不想返回此子字符串。

我尝试了regex_substr('M365', '[0-9]', 2),但这不是我想要的,它只返回第二位置的内容,而不返回整个子字符串。

2 个答案:

答案 0 :(得分:0)

这似乎可以满足您的要求:

select regexp_substr(substr(x, 2), '^\d+$')

这将开始匹配字符串中第二个位置的模式,要求从那里开始一个数字。

答案 1 :(得分:0)

[0-9]仅搜索一个数字。您想知道它们是否都是数字,所以需要使用“ +”运算符。有关更多信息,请访问:

https://www.techonthenet.com/oracle/functions/regexp_substr.php

以下代码应为您工作。

regex_substr('M365', '[0-9]+', 2)