oracle正则表达式从字符串中提取小数

oracle regular expression to extract decimal numbers from string

我正在尝试从随机字符串中提取十进制数。如何使用 regex_replace 函数做到这一点? (可选)我想为负整数保留负号。

示例:

输入:

'text abc023.46'
 '-123.12abc'

输出:

023.46
-123.12

使用REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR(col, '-?\d+(\.\d+)?')
FROM yourTable;

此模式还使小数部分成为可选部分。