sql - Oracle SQL,仅舍入大于“一半”
问题描述
我需要将数字“减半”并保留 (.5),例如:
如果数字 = (9115.7) 则 (9116)
如果数字 = (9115.5) 则 (9115.5)
如果数字 = (9115.3) 则 (9115)
解决方案
您可以使用 case 表达式重写自己的舍入逻辑:
CREATE TABLE t
AS
SELECT 9115.7 AS col FROM dual UNION ALL
SELECT 9115.5 AS col FROM dual UNION ALL
SELECT 9115.3 AS col FROM dual;
SELECT col, CASE WHEN MOD(ABS(col),1) = 0.5 THEN col ELSE ROUND(col) END
FROM t;
输出:
+---------+---------+
| COL | ROUNDED |
+---------+---------+
| 9115.7 | 9116 |
| 9115.5 | 9115.5 |
| 9115.3 | 9115 |
+---------+---------+
推荐阅读
- reactjs - 使用 react-redux-firebase 的 Firebase Firestore 查询
- python - 在 python 3 的 Visual Studio 代码中检测未使用的导入?
- javascript - 基于多个输入字段过滤表列
- javascript - 将 Xpath 转换为 CSS 选择器
- r - 在具有一个节点的 R 中解析 xml
- python - Intel Distribution for Python 中提供了哪些优化?
- chef-infra - CHEF 云供应支持
- mysql - 用于性能的 Where 子句中的 Number Vs Varchar2
- vue.js - 如何在 vue 2 中获取 DOM 元素?
- python - Discord.py 提供角色的反应机器人