使用T-SQL和Microsoft SQL Server,我想指定十进制数字的数量,当我做2个整数之间的除法,如:

select 1/3

它当前返回0。我想让它返回(0,33)

喜欢的东西:

select round(1/3, -2)

但这行不通。我怎样才能达到预期的结果?


当前回答

我很惊讶地看到select 0.7/0.9在Teradata中返回0.8,因为它们已经作为浮点数/十进制数!我必须做cast(0.7作为float)来获得我所追求的输出。

其他回答

使用这个

select cast((1*1.00)/3 AS DECIMAL(16,2))作为结果

在这个sql语句中,首先转换为浮点数或乘以1.00。这将是一个浮点数。这里我考虑小数点后2位。你可以选择你需要的。

use

select 1/3.0

这个就行了。

因为SQL Server执行整数除法。试试这个:

select 1 * 1.0 / 3

当您将整数作为参数传递时,这很有帮助。

select x * 1.0 / y

如果您正在寻找一个常数,来自stb和xiowl的建议是很好的。如果你需要使用现有的整数字段或参数,你可以先将它们转换为浮点数:

SELECT CAST(1 AS float) / CAST(3 AS float)

or

SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float)

当使用文字时,最好的方法是“告诉”SQL 你指的是哪一种?

如果你想要一个十进制的结果,添加小数点”。0"到你的数字:

SELECT 1.0 / 3.0
Result
0.333333

如果你想要一个浮点(实)结果,在你的数字后面加上"e0":

SELECT 1e0 / 3e0
Result
0.333333333333333