MSSQL - 在一个分区中获取小数

时间:2016-06-03 17:32:22

标签: sql sql-server sql-server-2014

我正在使用MSSQL 2014,我想知道是否有更好的方法在10/3之类的简单部门中显示2位小数。

SELECT 10/3 -- returns 3
SELECT CONVERT(DECIMAL(10, 2), 10/3) -- RETURNS 3
SELECT CAST(10/3 AS DECIMAL(10,2)) -- RETURNS 3

我发现使其工作的唯一方法是将除数转换为float:

SELECT 10/CAST(3 AS FLOAT) -- returns 3.333333...
SELECT CONVERT(DECIMAL(10, 2), 10/CAST(3 AS FLOAT)) -- RETURNS 3.33
SELECT CAST(10/CAST(3 AS FLOAT) AS DECIMAL(10,2)) -- RETURNS 3.33

这两个最后选项是最好的方法吗?是否可以在没有任何演员/转换的情况下执行此操作?

3 个答案:

答案 0 :(得分:2)

是的,要截断你必须指定你只需要两位数。如果是我,我会这样做:

SELECT cast(10/3.0 as decimal(10,2))

答案 1 :(得分:0)

如果我这样做,我会得到一个浮动,

select 10/3.0

https://stackoverflow.com/a/11719098/28045

答案 2 :(得分:0)

将一个整数除以另一个整数将产生整数。要么转换数字,要么使用值为10和3的float或decimal类型的变量。