SQL仅获取带前导数字的字符串

SQL仅获取带前导数字的字符串,sql,regex,oracle,Sql,Regex,Oracle,我认为这相当简单。我只想返回查询结果中与前导号码相关的字符串值 例如: 003 - Preliminary Examination Plan 005 - Coordination 1000a - Balance sheet Advertising Amortization Partnerships 希望获得: 003 - Preliminary Examination Plan 005 - Coordination 1000a - Balance sheet 这个代码

我认为这相当简单。我只想返回查询结果中与前导号码相关的字符串值

例如:

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

如果您使用的是SQL Server,请尝试以下操作:

select distinct Issue
 from SQLIssue
 where AIssue LIKE '[0-9]%'
 order by AIssue

请参阅当前正则表达式的文档,要求字符串完全由数字组成。请尝试以下操作:

where regexp_like( AIssue, '^[[:digit:]].*$' )
(注意添加的点)

更详细地说,
匹配任何字符,
*
表示“将上一术语重复零次或多次”

因此,原始正则表达式表示“零个或多个数字”,而上面的正则表达式表示“一个数字后跟零个或多个字符”

编辑:@mellamokb在评论中建议使用上述正则表达式的较短版本:

where regexp_like( AIssue, '^[[:digit:]]' )

另一种解决方案,但不涉及正则表达式:

select distinct Issue
from SQLIssue
where substr(AIssue, 1, 1) between '0' and '9'
order by AIssue 

您使用的是哪种数据库系统?SQL Server?如果是,版本号也可能会影响答案。这实际上是一个相当罕见的数据库系统,名为Livelink,它使用oracle后端,但使用标准SQL进行查询。非常感谢您的帮助!很好奇添加的点的意义是什么?@BVilleball:the点的意思是““任意字符”,星号是重复运算符。我已经扩展了答案。只匹配
^[[:digit:]会更有效吗
?这似乎有效:@mellamokb:好主意,谢谢。我已经在答案中包含了这一点。两种方法都得到了正确的结果。也谢谢你的解释。我在发布之前也尝试过这一方法,但它给出了零结果,我认为这是因为整个字符串不会转换为数字。
中的字符范围类似于
子句,e.g.,
[0-9]
,是一种特定于SQL Server的(以及一些其他RDBMS)功能:。由于您使用的是基于Oracle的产品,因此查询无法工作。