SQL查询乘以十进制

时间:2016-12-06 18:26:33

标签: sql-server

我试图将两个值相乘。一个是小数,一个是数字。

示例 - 总计是我想要的:

Number   Decimal   Total
900       1.111    999.9
800       1.25     1000
460       4.25     1955

在我的Sql查询中,我尝试了以下内容:

(ISNUMERIC(UpgradeEmptyNodesPercentageLimitForAllocation) * RawTotalNodes) as ExpectedEmptyNodeCountForUpgrade

但是,它总是返回Number。以上怎么做?

谢谢...

2 个答案:

答案 0 :(得分:0)

检查数据类型的比例,如果它们为零,则SQL将删除小数

DECLARE @d1 DECIMAL(18,0) = 1.111
DECLARE @d2 DECIMAL(18,10) = 1.111


SELECT @d1,@d2

答案 1 :(得分:0)

ISNUMERIC实际上用于评估字符串,而不是数字类型 - 它只返回01。我想你想要做的是将CAST数字和/或十进制值更精确地计算,然后乘以。影响操作的因素是存储操作的两个因素的精确度和规模。

这些类型,按名称,实际上是可以互换的 - 但精度和比例不是。

尝试将两者都转换为NUMERIC一些可接受的精度和比例,然后相乘。或者,如果您没有始终有效的精度和比例,那么转换为REAL,如果这是一个选项。

Read more on MSDN