我想知道整数是如何舍入的。
例如,我输入的值如下:500
但在我查询后,数据值返回如下:500.00
。
有没有办法对整数进行舍入,但同时会留下这样的十进制数:9.45
?
我使用的是SQL Server 2008 Management Studio。如果有人可以提供帮助,请告诉我。谢谢!
答案 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;