将varchar值'null'转换为数据类型int时转换失败

时间:2012-02-20 08:35:09

标签: c# asp.net sql sql-server sql-server-2008

我从数据库获取值到aspx页面。获取一列的值时,该列会抛出一个像......

的值
null,402,2912,2909,2910,2913,2911,2914,2915,2388,2389,2390,
2391,2964,2965,2392,2393,2394,2395,2397

现在它抛出异常

  

转换varchar值时转换失败' null'数据   输入int。

但是我想要列的所有其他值,除了null ...

有没有办法转换这个' null'到' 0',但仍然应该存在所有其他值。

4 个答案:

答案 0 :(得分:4)

使您的数据类型Nullable<int>而不是int以允许转换的可以为空的值,或者在sql select语句中,您可以执行此操作:ISNULL(yourcolumn, 0)转换null到0。

答案 1 :(得分:3)

我只是将我的类型声明为int? variable;,这是一个可以为null的int类型。 这样可以避免出现异常,如果需要,您可以轻松地将值转换为0

if (value == null)
   value = 0;

答案 2 :(得分:2)

由于您说您希望结果中除null值之外的所有值,您可以使用where子句在select语句中对其进行过滤。

SELECT * FROM COLUMN WHERE COLUMN_VALUE IS NOT NULL

或者,如果你使用Linq到EF:

from x in yourObjectContext.yourColumns where x != null

答案 3 :(得分:1)

我认为您正尝试在数据库中从NULL更改为0。 那你应该试试这个 -

SELECT CASE WHEN columnName IS NULL THEN '0' ELSE columnName END FROM tableName