【发布时间】:2022-01-13 16:15:57
【问题描述】:
在 Oracle 中,我需要从字符串字段中获取数字的总和。这些数字可能包括一个 .. 我尝试了以下查询:
SELECT line_id, SUM(footage)
FROM (SELECT line_id,
CASE
WHEN footage IS NULL THEN
0
ELSE
TO_NUMBER(REGEXP_REPLACE(footage, '[^0-9.]+', ''))
END AS footage
FROM pipe)
GROUP BY service_line_id
这会在 REGEXP_REPLACE 上给出一个错误,即它是一个无效数字。如果我省略小数点,它会起作用,但我真的需要包括它。如何获得正则表达式中包含小数点的总和?
【问题讨论】:
-
请包含产生错误的样本数据。您的会话 NLS_NUMERIC_CHARACTERS 设置是什么?您可能只需要在
to_number()调用中使用可选的第三个参数来指定它。但是这些值可能还有其他问题。 -
您的查询将作为
service_line_id的外部查询组失败,但内部子查询中没有选择service_line_id。
标签: sql oracle sum regexp-replace