这是一种情况,例如,请查看下表中的内容
create table cast_ex(nearly_number varchar2(20));
insert into cast_ex values('10');
insert into cast_ex values('20');
insert into cast_ex values('thirty');
insert into cast_ex values('FORTY');
insert into cast_ex values('Fifty[50])');
insert into cast_ex values('60');
commit;
我想将列near_number完全为整数的所有值相加。在这种情况下,我想总和10,20,60。其他行不被考虑,因为它们不包含整数值(即,它们包含0到9之间的字符)
期望的输出:
SUM_INT
----------
90
答案 0 :(得分:1)
使用replay
检查replay
是否仅包含从开头到结尾的数字,使用REGEXP_LIKE()
POSIX类过滤来自NEARLY_NUMBER
的行,然后使用{ {1}}和[:digit:]
。
CAST_EX
答案 1 :(得分:1)
您需要获取满足整数子句的行
1)翻译&替换将删除除整数之外的所有内容
2)如果剩余的是NULL,则原始字符串必须是整数
3)将其转换为数字&得到SUM。
[ControlDefinition("table[.//h2[contains(@id, 'WorkflowHeader')]]", ComponentTypeName = "table")]
答案 2 :(得分:1)
(需要Oracle 12.2或更高版本:)
select sum(to_number(nearly_number default 0 on conversion error)) as sum_int
from cast_ex
where mod(to_number(nearly_number default 0 on conversion error),1) = 0;
或尽量减少显式转化次数
select sum(int_value) as sum_int
from ( select to_number(nearly_number default 0 on conversion error) as int_value
from cast_ex )
where mod(int_value,1) = 0;
答案 3 :(得分:-1)
根据您的问题,您的答案如下:
select sum(cast(VALUE AS INTEGER)) from example where ISNUMERIC(value) = 1