我认为这很简单。我只想返回与查询结果中的前导数字联系的字符串值。
例如:
003 - Preliminary Examination Plan
005 - Coordination
1000a - Balance sheet
Advertising
Amortization
Partnerships
想得到:
003 - Preliminary Examination Plan
005 - Coordination
1000a - Balance sheet
这段代码给了我零结果。如何检查前导数字是否包含数字并返回字符串的其余部分?
select distinct AIssue
from SQLIssue
where regexp_like( AIssue, '^[[:digit:]]*$' )
order by AIssue
答案 0 :(得分:6)
您当前的正则表达式将字符串重新组成完全由数字组成。请尝试以下方法:
where regexp_like( AIssue, '^[[:digit:]].*$' )
(注意添加的点)。
详细说明,.
匹配任何字符,*
表示“重复上一个字词零次或更多次”。
因此,原始正则表达式表示“零或更多数字”,而上述正则表达式表示“数字后跟零或更多任何字符。
编辑:@mellamokb在评论中提出了上述正则表达式的较短版本:
where regexp_like( AIssue, '^[[:digit:]]' )
答案 1 :(得分:1)
如果您使用的是SQL Server,请尝试以下操作:
select distinct Issue
from SQLIssue
where AIssue LIKE '[0-9]%'
order by AIssue
请参阅LIKE
答案 2 :(得分:1)
另一种解决方案,但不涉及正则表达式:
select distinct Issue
from SQLIssue
where substr(AIssue, 1, 1) between '0' and '9'
order by AIssue