【问题标题】:Conversion failed when converting the varchar value 'null' to data type int将 varchar 值“null”转换为数据类型 int 时转换失败
【发布时间】:2012-03-10 14:48:47
【问题描述】:

我正在从数据库中获取值到一个 aspx 页面。在获取一列的值时,该列抛出的值类似于...

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

现在它抛出一个异常

将 varchar 值“null”转换为数据时转换失败 输入整数。

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

有什么办法可以将这个“null”转换为“0”,但所有其他值都应该存在。

【问题讨论】:

  • 您没有显示任何您正在使用的代码 - 有很多方法可以解决这个问题,所有方法都有不同的处理 null 值的方法。请向我们提供更多信息。
  • 代码在哪里?我认为你应该使用 int.TryParse 而不是 Convert.ToInt32(我猜你正在使用它)
  • 请提供代码如何获取此值 null,402,2912,2909,2910,2913,2911,2914,2915,2388,2389,2390,2391,2964,2965,2392,2393 ,2394,2395,2397
  • 在SQL脚本中,可以使用..IsNull(column,0)

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


【解决方案1】:

将您的数据类型设为Nullable<int> 而不是int 以允许转换的int 可为空值,或者在sql select 语句中您可以这样做:ISNULL(yourcolumn, 0)null 转换为0。

【讨论】:

    【解决方案2】:

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

    if (value == null)
       value = 0;
    

    【讨论】:

      【解决方案3】:

      由于您说要在结果中包含除空值之外的所有值,因此您可以在 select 语句中使用 where 子句对其进行过滤。

      SELECT * FROM COLUMN WHERE COLUMN_VALUE IS NOT NULL
      

      或者,如果您使用的是 Linq to EF:

      from x in yourObjectContext.yourColumns where x != null
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2010-09-30
          • 1970-01-01
          • 2011-12-01
          • 2012-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多