正则表达式 - 从字符串中提取数字[关闭]

问题描述 投票:-2回答:1

我想在Oracle SQL中创建REGEX DEFINITION,它将返回一些行数,其中包含来自字符串的浮点数。这该怎么做?

case1(n = 4:48-48h,72-72h,96-96h,120-120h)

每个范围n = 4> 4个记录,检索值为:48.00,72.00,96.00 120.00

case2(n = 5:0-0h,24.21-24.21h,47.77-47.75h,71.75-71.75h,96.08-96.08h)

每个范围n = 5> 5条记录,检索值为:00.00,24.21,47.77,71.75,96.08

输入:

select REGEXP_SUBSTR('(n=4: 48-48h, 72-72h, 96-96h, 120-120h)', MY_REGEX_DEFINITION ) as X from dual;

输出行:

X
48.00
72.00
96.00
120.00
sql oracle
1个回答
0
投票

我查找了一个关于如何拆分字符串的示例,因为您首先需要这样做才能找到字符串中的所有数字。以下是我对该示例的重新设计以适合您的问题。不幸的是,它在结尾处返回一个空行,但它应该是一个开始的东西。

SELECT CAST(REGEXP_SUBSTR(result_row, '[^=]\d+\.?\d*' ) AS NUMBER)
FROM (
    SELECT 
        TRIM(REGEXP_SUBSTR('(n=5: 0-0h, 24.21-24.21h, 47.77-47.75h, 71.75-71.75h, 96.08-96.08h)', '[^ ]+h', 1, lines.column_value)) result_row
    FROM dual,
    TABLE (CAST (MULTISET
        (SELECT LEVEL FROM dual
            CONNECT BY instr('(n=5: 0-0h, 24.21-24.21h, 47.77-47.75h, 71.75-71.75h, 96.08-96.08h)', '-', 1, LEVEL - 1) > 0
        ) AS sys.odciNumberList ) ) lines
    ORDER BY  lines.column_value)//

This is the article我从中获取了示例代码。

© www.soinside.com 2019 - 2024. All rights reserved.