我对SQL很新,我试图从ORACLE DB中提取一些数据。我的目标是返回查询值位于" AA_SYNTAX"的范围内的行。表中的列。
例如:
如果" AA_SYNTAX"列是' p.G12_V14insR'我的搜索值是13,我想返回那一行。此列按p。%number_%number%组织。所以基本上我想从这个列中返回两个数值,看看我的查询值是否介于它们之间。
我有我需要的所有表连接在一起,只是不知道如何构建这样的查询。我知道在正则表达式中我会做类似" \ d +"但我不知道如何将其转换为SQL。
由于
答案 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。
希望这有助于您朝着正确的方向前进。