在 SQL 服务器中自定义四舍五入小数值
Customize rounding a decimal value in SQL Server
我在 SQL 服务器中有一个值列表,需要进行一些自定义舍入。我尝试使用内置的 SQL 服务器功能,但这些功能不起作用。
我想将小数值舍入到最接近的 5 值
例如
- 1.02,1.01,1.03,1.04,1.05 -- 应四舍五入为 1.05
- 1.06,1.07,1.08,1.09,1.10 -- 应四舍五入为 1.10
- 1.11,1.12,1.13,1.14,1.15 -- 应四舍五入为 1.15
- 1.16,1.17,1.18,1.19,1.20 -- 应四舍五入为 1.20
您能否为 SQL 服务器中的这种情况提出一个可行的解决方案?
提前致谢
拉朱
您是否只处理 两个 十进制数字?
如果是这样,您可以使用这样的函数:
CREATE FUNCTION dbo.RoundToFive(@Input DECIMAL(16,2))
RETURNS DECIMAL(16,2)
AS
BEGIN
RETURN ROUND(@Input*20 + 0.49, 0) / 20.0;
END;
如果你这样使用:
DECLARE @data TABLE (StartValue DECIMAL(16,2))
INSERT INTO @data (StartValue)
VALUES (1.00), (1.02), (1.01), (1.03), (1.04), (1.05), (1.06)
SELECT StartValue, dbo.RoundToFive(StartValue)
FROM @data
你会得到这样的输出:
我在 SQL 服务器中有一个值列表,需要进行一些自定义舍入。我尝试使用内置的 SQL 服务器功能,但这些功能不起作用。
我想将小数值舍入到最接近的 5 值
例如
- 1.02,1.01,1.03,1.04,1.05 -- 应四舍五入为 1.05
- 1.06,1.07,1.08,1.09,1.10 -- 应四舍五入为 1.10
- 1.11,1.12,1.13,1.14,1.15 -- 应四舍五入为 1.15
- 1.16,1.17,1.18,1.19,1.20 -- 应四舍五入为 1.20
您能否为 SQL 服务器中的这种情况提出一个可行的解决方案?
提前致谢
拉朱
您是否只处理 两个 十进制数字?
如果是这样,您可以使用这样的函数:
CREATE FUNCTION dbo.RoundToFive(@Input DECIMAL(16,2))
RETURNS DECIMAL(16,2)
AS
BEGIN
RETURN ROUND(@Input*20 + 0.49, 0) / 20.0;
END;
如果你这样使用:
DECLARE @data TABLE (StartValue DECIMAL(16,2))
INSERT INTO @data (StartValue)
VALUES (1.00), (1.02), (1.01), (1.03), (1.04), (1.05), (1.06)
SELECT StartValue, dbo.RoundToFive(StartValue)
FROM @data
你会得到这样的输出: