繁体   English   中英

将 varchar2 转换为 oracle 中的数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM