【问题标题】:Replacing a value with NULL in a table in SQL Server using vb.net使用 vb.net 将 SQL Server 表中的值替换为 NULL
【发布时间】:2013-08-03 09:47:27
【问题描述】:

我的表将包含以下值。 h1,h2,h3 是大小为 1 的 varchar 字段

    **Register  Date        Year    Batch   h1      h2      h3**    
    1138M0321   02-08-2013  3       1       A       A       NULL
    1138M0323   02-08-2013  3       1       P       P       NULL
    1138M0324   02-08-2013  3       1       P       P       NULL    
    1138M0325   02-08-2013  3       1       P       P       NULL

我需要更新这些字段之一*(h1/h2/h3)* 为 NULL。但我只能添加 "" 而实际上不能添加 NULL 如何使用 NULL 更新表?

【问题讨论】:

  • 为什么只能加""?规则是什么,要设置哪些行和字段为NULL?
  • 取决于我需要更新 H1 或 H2 或 H3 的条件。当字段不包含任何值时,我无法将值恢复为 NULL,这是字段的起始状态
  • 根据which条件,如果我们不知道规则,我们应该如何向您显示正确的sql?日期字段扮演什么角色?为什么不能将值 back(?) 设置为 NULL?您尝试了什么,结果如何,想要的结果是什么?
  • 这里是规则.. WHERE year=" & year & " AND batch=" & batch & "" AND date= '02-08-2013' 我试过 DBNull.Value 但还是不行'不要放置NULL
  • 请显示您尝试使用的代码。

标签: sql sql-server vb.net


【解决方案1】:

如果你没有 NOT NULL 约束

"UPDATE student_attendance_table SET h1 = " & System.DBNull.Value & " WHERE...

【讨论】:

  • 我怎么能在 vb.net 中做到这一点,当我这样尝试时没有 NULL “UPDATE student_attendance_table SET h1 =” & NULL & “ WHERE...只有 Nullable 和 DBNull 如果我使用DBNull 显示错误
  • 不能使用 System.DBNull.Value 吗?
【解决方案2】:

为什么要使用 VB Nulls ...

UPDATE student_attendance_table SET h1 = NULL WHERE...

【讨论】:

    【解决方案3】:

    NULL 值必须是 SQL,而不是 .NET 值,因此不要尝试以下操作:

    "... SET h1 = " & NULL & " ... "
    

    只需在查询中使用它:

    "... SET h1 = NULL ... "
    

    注意:

    空值不能用于区分表中的一行与表中的另一行所需的信息,例如主键。

    MSDN Documentation

    【讨论】:

      【解决方案4】:

      如果你想坚持使用 NULL,那么它必须包含在语句本身中,不带任何参数,像经典方式一样使用:

      "UPDATE student_attendance_table SET h1 = NULL WHERE...
      

      【讨论】:

        【解决方案5】:
        "Update Table Set Column = (NULL As Column Type) where Condition"
        

        【讨论】:

          【解决方案6】:
          UPDATE student_attendance_table SET h3 = 'NULL' WHERE...
          

          这将使您的表格如下所示:

          **Register  Date        Year    Batch   h1      h2      h3**    
              1138M0321   02-08-2013  3       1       A       A       'NULL'
              1138M0323   02-08-2013  3       1       P       P       'NULL'
              1138M0324   02-08-2013  3       1       P       P       'NULL'
              1138M0325   02-08-2013  3       1       P       P       'NULL'
          

          当您想要显示列 h3 的值时。可以trim单引号显示NULL。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-24
            • 1970-01-01
            • 2022-11-22
            • 1970-01-01
            • 2013-05-26
            • 1970-01-01
            • 2021-04-04
            • 1970-01-01
            相关资源
            最近更新 更多