【发布时间】:2021-05-26 12:45:23
【问题描述】:
我正在尝试创建一个用户定义的 ROUND 函数,以便它的工作方式与 SQL Server 中的标准 ROUND 函数不同。
基本上我想要做的是,如果输入值是例如 80.5,我正在尝试创建一个 ROUND 函数,将这个值四舍五入为 80 而不是 81(这是标准 ROUND 的输出函数)。
我为此创建了一个查询,并在创建 ROUND 函数时添加了相同的代码。下面是我创建的查询:
SELECT
CASE WHEN (80.56925 - ROUND(80.56925,0)) = -0.5 THEN FLOOR(80.56925)
WHEN (80.56925 - ROUND(80.56925,0)) > -0.5 AND (80.56925 - ROUND(80.56925,0)) <= -0.1 THEN ROUND(80.56925,0)
WHEN (80.56925 - ROUND(80.56925,0)) >= 0 THEN ROUND(80.56925,0)
ELSE 80.56925
END
这个查询的输出就是我需要的。
现在我正在尝试进一步增强这一点,因为正如您可能已经理解的那样,这只有在我有 1 个小数位值即 ROUND 函数基本上作为 ROUND(input, 0) 工作时才有效,但我想为 @ 运行它987654328@、ROUND(input, 2)等等。
现在我知道我需要传递另一个变量作为输入参数,但我不确定我需要在上面的SELECT 语句中进行哪些更改。
对我如何处理这个问题并改进ROUND 功能有什么建议吗?
【问题讨论】:
-
那么这里的逻辑是什么,当你有0.5而不是向上时,你只想向下取整吗? 0.51 呢?
-
是的!这就是我想做的四舍五入而不是在它为 0.5 时四舍五入......查询有效,但仅适用于 1 个小数位值......我希望在 0.51 或 0.55 或 0.567 等时运行相同的逻辑...对不起,如果我没有说清楚。
标签: sql-server function user-defined-functions sql-function