SQL十进制(18,4)舍入整数?

时间:2017-08-31 18:37:21

标签: sql sql-server sql-server-2008

我想知道整数是如何舍入的。

例如,我输入的值如下:500

但在我查询后,数据值返回如下:500.00

有没有办法对整数进行舍入,但同时会留下这样的十进制数:9.45

我使用的是SQL Server 2008 Management Studio。如果有人可以提供帮助,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:5)

您不是要求对数字进行舍入,因为您不想改变实际值。相反,你问的是格式化问题。大多数情况下,这应该在表示层而不是在SQL服务器中完成。

格式化值是创建此值的文本表示(字符串)的行为,通常基于某些给定的格式说明符和区域设置(省略时区域设置通常是默认的区域设置)。

由于您使用的是SQL Server,我假设您使用的是.NET语言。 .NET中的大多数数字类型都支持接受自定义格式选项的方法ToString()的重载。请参阅MSDN documentation on custom format strings

如果您确实想格式化SQL Server中的数值,那么SQL Server 2012及更高版本具有Format()功能。不幸的是,SQL Server 2008中尚未提供此功能。此Format()函数与.NET版本非常相似。

例如,以下代码将以您希望的格式格式化数字:

PRINT FORMAT(500.00, '#.##') -- prints "500"
PRINT FORMAT(9.45, '#.##') -- prints "9.45"

请注意,这将始终舍入到最多2位小数。如果你想要更多的小数,那么你可以在点之后增加#的数量。

答案 1 :(得分:0)

尝试此查询:(其中value是列)

use your_database;

select 
   Cast(CONVERT(DECIMAL(18,2),value) as nvarchar) AS Value2 
FROM 
   table_name;