如何从SQL中的文本中提取数字范围

时间:2016-03-15 18:51:28

标签: regex oracle

我对SQL很新,我试图从ORACLE DB中提取一些数据。我的目标是返回查询值位于" AA_SYNTAX"的范围内的行。表中的列。

例如:

如果" AA_SYNTAX"列是' p.G12_V14insR'我的搜索值是13,我想返回那一行。此列按p。%number_%number%组织。所以基本上我想从这个列中返回两个数值,看看我的查询值是否介于它们之间。

我有我需要的所有表连接在一起,只是不知道如何构建这样的查询。我知道在正则表达式中我会做类似" \ d +"但我不知道如何将其转换为SQL。

由于

1 个答案:

答案 0 :(得分:0)

使用Oracle,您可以use Regular Expressions to extract a number from the string

更具体地说,我会调查REGEXP_SUBSTR

使用上例中给出的日期,您可以使用:

with cte as
(
    select 'p.G12_V14insR' as AA_SYNTAX from dual
)

select 
    REGEXP_SUBSTR(AA_SYNTAX,'p\.[[:alpha:]]+([[:digit:]]+)', 1, 1, NULL, 1) as Bottom 
    ,REGEXP_SUBSTR(AA_SYNTAX,'\_[[:alpha:]]+([[:digit:]]+)', 1, 1, NULL, 1) as Top 
from cte

我确定你可以清理正则表达式,但是,鉴于此,Top的值为14,Bottom的值为12。

希望这有助于您朝着正确的方向前进。