【发布时间】:2016-03-21 21:02:40
【问题描述】:
这可能看起来很简单,但我想不通。我有一个数据类型为 bigint 的字段,我试图将它乘以另一个十进制(9,5)字段,但我在所有计算中都得到了 null。我尝试将 Bigint 转换为十进制,但它也不起作用。我错过了什么?
我相信我正在使用 SQL Server 2000。我引用了两个不同表中的数字,这些表连接在一个公共字段上。
((cast([costs] as decimal(9,5)) * cast([Ratio] as decimal(9,5))) as [Cost Ratio]
我还添加了 isnull(ratio,0),现在它使用 0.00000 填充我的空值,但仍然没有在 [cost ratio] 字段中获得相乘值。
【问题讨论】:
-
您使用哪种 RDBMS?
-
另外,minimal reproducible example 可能会有所帮助。如果我假设 MSSQL 2014 和 try
SELECT CAST(3 AS BIGINT) * CAST(2.5 AS DECIMAL(9,5))it works as expected. -
如果你把你使用的公式和你如何转换值,那就太好了。
-
您的列中的值之一是
NULL吗?这将是最有可能的情况。如果结果类型不能包含计算结果,你将在 sql server 中得到一个异常。 -
请附上Minimal, Complete, and Verifiable example。您要求我们猜测您的输入是什么,并猜测输出是什么(您都不提供)。在您展示可以复制的东西之前,我们无法帮助您。
标签: sql sql-server decimal bigint