如果值中存在数字,则需要在列(varchar)中提取值的数字部分。
ColumnA具有类似ABC,M365,J344,MCT等的值。
例如,我想从第二个位置检查整个值,例如,是否要提取一个数字,
a。 M365,从第二个位置365是一个数字,因此我想返回此子字符串。 b。 M3AB,从第二个位置开始,3AB不是数字,所以我不想返回此子字符串。
我尝试了regex_substr('M365', '[0-9]', 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)