这是什么类型:ISNULL(SUM(COALESCE(a.currency,0)),0)

时间:2010-08-11 17:06:12

标签: c# .net sql visual-studio

我有以下一段sql查询:

Sql += " SELECT     ISNULL(SUM(COALESCE (a.currency, 0)), 0) AS monthCurrency              
FROM          IW_Awards AS a ";

查询工作正常,我试图在提交查询后在C#中转换此值,但我找不到它的类型。

我试过int,int?和字符串。当我试图转换为字符串时,我有以下错误消息: 无法将类型为“System.Decimal”的对象强制转换为“System.String”。

当我试图将它转换为Int或Int时?我有: 指定的演员表无效。

数据库:SQL IDE:Visual Studio 2010 数据库接口:LINQ(但我正在创建自己的查询) 服务器端语言:C#

感谢您的帮助。

6 个答案:

答案 0 :(得分:5)

你尝试过小数吗?它告诉你它试图将System.Decimal强制转换为字符串,当你试图将它强制转换为字符串时。

它将返回任何类型的货币。

答案 1 :(得分:2)

什么类型的货币?我会说这可能是您的错误消息中的十进制数据类型。

出于好奇,为什么要使用coalesce和isnull?由于您已将所有空值更改为0,因此根本不需要外部isnull。

答案 2 :(得分:1)

听起来像是小数。这就是错误消息告诉你的,你正在尝试将小数字转换为字符串。

答案 3 :(得分:1)

如果currency是数据库中的int,则使用Convert.ToInt32。另一种选择是使用myTable.Rows[0].Field<int>("monthCurrency")命名空间中的System.Data。问题有时即使你从SqlServer返回一个int,.NET仍然认为它是一个小数。

答案 4 :(得分:1)

在我看来,结果是decimal,基于错误消息指定它无法从System.Decimal转换。

答案 5 :(得分:1)

正如其他人提到的那样,你正在寻找decimal,但我想将这个link添加到CLR-SQL类型的映射文档中(非常有用的链接)。