这里有人可以请教如何在从数据库中选择数值时在第一个数字后添加小数点吗?
示例:输出是 8250 应该是 8.250
我试过这个:
convert(decimal(10,3),ti.Rate/1000) AS Amount
但输出返回错误的值8.000
。应该是8.250
。
这里有人可以请教如何在从数据库中选择数值时在第一个数字后添加小数点吗?
示例:输出是 8250 应该是 8.250
我试过这个:
convert(decimal(10,3),ti.Rate/1000) AS Amount
但输出返回错误的值8.000
。应该是8.250
。
因为转换调用中的所有值都是整数,所以它在转换为小数之前执行整数除法以获得整数结果。
ti.Rate/1000
CONVERT
如果在数字文字 1000 中添加小数位,SQL Server 会将其视为十进制/数字类型的数字而不是整数,因此您需要做的就是
CONVERT(DECIMAL(10,3),ti.Rate/1000.0) AS Amount
. 将整数除以小数/数字(反之亦然)得到小数/数字。实际上,
ti.Rate/1000.0 AS Amount
除非您特别需要将类型完全DECIMAL(10,3)
替换为默认值,否则您可能可以这样做(SQL2016 上的快速测试显示默认值是NUMERIC(17,6)
,请注意 numeric 和 decimal 在功能上是相同的,因为一个是另一个的同义词)。或者,如果您确实需要DECIMAL(10,3)
,您可以通过转换输入之一而不是输出来避免额外的隐式转换:(CONVERT(DECIMAL(10,3),ti.Rate)/1000.0 AS Amount
尽管这里的性能差异可能充其量是无穷小的)。