sql - 在oracle中将varchar2转换为数字
问题描述
嗨,我有以下专栏
Result
______
1.5
0.27
0.25
NEGATIVE
5.33
0.15
PROBLEM
NEGATIVE
POSITIVE
POSITIVE
我需要计算当小于 1 的结果为负数时有多少个负数 当我使用 TO_NUMBER 函数时我得到一个错误 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”之外,我假设您的列中没有任何其他流氓非数字字符串。如果还有其他人,那么您也需要处理它们。
推荐阅读
- javascript - 在 JavaScript 中从数组中选择随机元素会返回整个数组
- c# - 在数据库中存储时区指示符
- python - 从文本文件中获取一行的前 n 个字符?
- django - Django CBV:get_queryset() 和 get_context_data()?
- sql - Presto查询:在地图中查找具有最大值的键
- capacitor - Capacitor: Uncaught (in promise) PushNotifications 没有网络实现
- python - Groupby 用于集群生成
- gcc - CMAKE:如何防止 CMAKE 构建项目不依赖的库?
- algorithm - Foobar 将枪带入警卫战斗优化
- java - 如何使用 NotificationListenerService android 获取 Whatsapp 联系号码?