C# 无法从 SQL Server SELECT 强制转换计算列



我似乎无法找到从SQL Server 2012SELECT语句转换计算列的方法。我正在计算一个名为 Yield 的简单值,它基本上是一个百分比。

SELECT 
TotalUnique, 
TotalFail, 
ISNULL(((TotalUnique - NullIf(TotalFail, 0)) / CONVERT(NUMERIC(38, 2), TotalUnique) * 100), 100) AS Yield 
FROM 
Products  

对于Yield列,我将如何使用阅读器检索此列?我不断收到错误消息

异常详细信息:System.InvalidCastException:指定的强制转换无效。

在线上:

DBYield = (float)reader["Yield"]

我整天都在寻找能为我提供线索的东西,但没有运气。

int DBTotalUnique = 0;
int DBTotalFailed = 0;
float DBYield = 00.0f;
while (reader.Read())
{
DBTotalUnique = (int)reader["TotalUnique"];
DBTotalFailed = (int)reader["TotalFail"];
DBYield = (float)reader["Yield"]
}

有人可以给我一个提示吗?

TSQL 中的Numeric等效于 .NET 中的Decimal(有关从 TSQL 到 .NET 的数据类型映射,请参阅本文(。

尝试投射到decimal

最新更新