使用T-SQL和Microsoft SQL Server,我想指定十进制数字的数量,当我做2个整数之间的除法,如:
select 1/3
它当前返回0。我想让它返回(0,33)
喜欢的东西:
select round(1/3, -2)
但这行不通。我怎样才能达到预期的结果?
使用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 0.7/0.9在Teradata中返回0.8,因为它们已经作为浮点数/十进制数!我必须做cast(0.7作为float)来获得我所追求的输出。
没有必要对它们都施法。除法的结果数据类型总是具有较高数据类型优先级的数据类型。因此,解决办法必须是:
SELECT CAST(1 AS float) / 3
or
SELECT 1 / CAST(3 AS float)
当使用文字时,最好的方法是“告诉”SQL 你指的是哪一种?
如果你想要一个十进制的结果,添加小数点”。0"到你的数字:
SELECT 1.0 / 3.0
Result |
---|
0.333333 |
如果你想要一个浮点(实)结果,在你的数字后面加上"e0":
SELECT 1e0 / 3e0
Result |
---|
0.333333333333333 |
看起来这个技巧在SQL Server中有效,而且更短(基于之前的回答)
SELECT 1.0*MyInt1/MyInt2
Or:
SELECT (1.0*MyInt1)/MyInt2
如果你来这里(就像我一样)寻找整数值的解决方案,以下是答案:
CAST(9/2 AS UNSIGNED)
返回5