SQL只获取带有前导数字的字符串

Bvi*_*let 4 regex sql oracle

我认为这很简单.我只想返回与查询结果中的前导数字联系的字符串值.

例如:

003 - Preliminary Examination Plan  
005 - Coordination  
1000a - Balance sheet
Advertising  
Amortization  
Partnerships
Run Code Online (Sandbox Code Playgroud)

想获得:

003 - Preliminary Examination Plan  
005 - Coordination  
1000a - Balance sheet
Run Code Online (Sandbox Code Playgroud)

这段代码给了我零结果.如何检查前导数字是否包含数字并返回字符串的其余部分?

select distinct AIssue
from SQLIssue
where regexp_like( AIssue, '^[[:digit:]]*$' )
order by AIssue
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 6

您当前的正则表达式将字符串重新组合为完全由数字组成.请尝试以下方法:

where regexp_like( AIssue, '^[[:digit:]].*$' )
Run Code Online (Sandbox Code Playgroud)

(注意添加的点).

详细说明,.匹配任何字符,并*表示"重复前一个字段零次或多次".

因此,原始正则表达式表示"零或更多数字",而上述正则表达式表示"数字后跟零或更多任何字符.

编辑:@mellamokb在评论中提出了上述正则表达式的较短版本:

where regexp_like( AIssue, '^[[:digit:]]' )
Run Code Online (Sandbox Code Playgroud)