我试图将两个值相乘。一个是小数,一个是数字。
示例 - 总计是我想要的:
Number Decimal Total
900 1.111 999.9
800 1.25 1000
460 4.25 1955
在我的Sql查询中,我尝试了以下内容:
(ISNUMERIC(UpgradeEmptyNodesPercentageLimitForAllocation) * RawTotalNodes) as ExpectedEmptyNodeCountForUpgrade
但是,它总是返回Number。以上怎么做?
谢谢...
答案 0 :(得分:0)
检查数据类型的比例,如果它们为零,则SQL将删除小数
DECLARE @d1 DECIMAL(18,0) = 1.111
DECLARE @d2 DECIMAL(18,10) = 1.111
SELECT @d1,@d2
答案 1 :(得分:0)
ISNUMERIC
实际上用于评估字符串,而不是数字类型 - 它只返回0
或1
。我想你想要做的是将CAST
数字和/或十进制值更精确地计算,然后乘以。影响操作的因素是存储操作的两个因素的精确度和规模。
这些类型,按名称,实际上是可以互换的 - 但精度和比例不是。
尝试将两者都转换为NUMERIC
一些可接受的精度和比例,然后相乘。或者,如果您没有始终有效的精度和比例,那么转换为REAL
,如果这是一个选项。