我必须忽略字符串中的前导零,前导/尾随空格,前导字母字符。请帮助使用什么正则表达式。
例如:
字符串为123abc
,则需要返回REGEXP_SUBSTR('abc123abc','([1-9]+[0-9]*)( *)$')
。
目前,我使用
{{1}}
但它为我返回null。
答案 0 :(得分:1)
像这样吗?
SQL> with test (col) as
2 (select 'abc123abc' from dual union all
3 select ' 1234ddc' from dual union all
4 select '0abcd' from dual union all
5 select '18858 ' from dual union all
6 select 'ab123ab45' from dual
7 )
8 select col, trim(regexp_replace(col, '^[[:alpha:]]+| |0')) result
9 from test;
COL RESULT
--------- ---------
abc123abc 123abc
1234ddc 1234ddc
0abcd abcd
18858 18858
ab123ab45 123ab45
SQL>
答案 1 :(得分:0)
消失, 正则表达式应该是这样。
此操作将删除所有前导空格,前导零。
查询示例:
SELECT REGEXP_SUBSTR('abc123abc','[1-9]+.*') from dual;
您可以看到我在这里尝试过的一些示例,此外,您还可以在这里进行更多测试。 https://regex101.com/r/zfohRB/1
正则表达式: '[1-9]+.*'
说明:
[1-9]
-这将寻找开始的号码。不包括0。
+
-量词+表示1或更多。
.
-之后的意思。
*
-表示0或更大。 (如果您认为数字后至少需要一些内容,可以用+
代替。)
祝你好运