【问题标题】:Creating user defined ROUND function in SQL Server在 SQL Server 中创建用户定义的 ROUND 函数
【发布时间】: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


【解决方案1】:

如果我理解正确,只需减去1,四舍五入,然后将其加回

SELECT ROUND(80.5 - 1,0) + 1 AS RoundedNumber;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2018-06-30
    • 2016-11-25
    • 2010-10-12
    • 2017-08-19
    • 2018-07-24
    • 2019-06-10
    相关资源
    最近更新 更多