在oracle中将varchar2转换为数字
Posted
技术标签:
【中文标题】在oracle中将varchar2转换为数字【英文标题】:convert varchar2 to number in oracle 【发布时间】:2019-10-29 12:30:37 【问题描述】:嗨,我有以下列
Result
______
1.5
0.27
0.25
NEGATIVE
5.33
0.15
PROBLEM
NEGATIVE
POSITIVE
POSITIVE
当小于 1 的结果也是负数时,我需要计算有多少负数 当我使用 TO_NUMBER 函数时,我得到一个错误 ORA-01722 "invalid number"
【问题讨论】:
重复查看> ***.com/questions/4486949/safe-to-number 多少底片?数一数,where result = 'NEGATIVE'
。 “结果小于 1”在哪里进入游戏?
【参考方案1】:
'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”之外,我假设您的列中没有任何其他流氓非数字字符串。如果还有其他人,那么您也需要处理它们。
【讨论】:
【参考方案2】:在 oracle 12.2 及更高版本上,您可以使用on conversion error
和to_number
功能如下:
Select
Count(1) as result
From your_table
Where your_column = 'NEGATIVE'
Or to_number(your_column default 1 on conversion error) < 1 ;
干杯!!
【讨论】:
以上是关于在oracle中将varchar2转换为数字的主要内容,如果未能解决你的问题,请参考以下文章