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