[英]convert varchar2 to number in oracle
嗨,我有以下专栏
Result
______
1.5
0.27
0.25
NEGATIVE
5.33
0.15
PROBLEM
NEGATIVE
POSITIVE
POSITIVE
当我使用 TO_NUMBER function 时,我需要计算当小于 1 的结果为负数时有多少负数我收到错误 ORA-01722“无效数字”
'NEGATIVE'
是字符串而不是数字,因此当您尝试将其转换为数字时会出现 ORA-01722。 所以你需要处理这些事件。 就像是:
select count(
case when result = 'NEGATIVE' then 1
when result != 'PROBLEM' and to_number(result) < 1 then 1
else null
end) as tot_negatives
from your_table;
严格来说 0.15 不是负数,因为它大于零,但我已经实现了你的定义。
请注意,除了“NEGATIVE”和“PROBLEM”之外,我假设您的列中没有任何其他流氓非数字字符串。 如果还有其他人,那么您也需要处理它们。
在 oracle 版本 12.2 及更高版本上,您可以使用带有to_number
function 的on conversion error
,如下所示:
Select
Count(1) as result
From your_table
Where your_column = 'NEGATIVE'
Or to_number(your_column default 1 on conversion error) < 1 ;
干杯!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.