当列为NULL时将数据附加到列

时间:2014-07-23 00:03:51

标签: sql sql-server

使用VB.net我有一个按钮点击更新SQL Server数据库表。如果ColumnOne为NULL,则以下代码可以正常工作:

Dim conn As Data.SqlClient.SqlConnection = New  Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("XXXX").ConnectionString)
Dim cmd As Data.SqlClient.SqlCommand
cmd = New Data.SqlClient.SqlCommand("UPDATE MyTable SET ColumnOne = ColumnOne + 'Milk and Cookies'",conn)
cmd.Connection.Open()
cmd.ExecuteNonQuery()
cmd.Connection.Close()

当列为NULL时,它不会更新。如何更改上述声明以添加"牛奶和饼干"当它为NULL时为列,但当它不为NULL时附加到现有值。

1 个答案:

答案 0 :(得分:2)

如果您正在使用SQL Server,则可以使用COALESCE,如果它具有任何值或指定值(如果为NULL),则返回列值。在这种情况下,您希望追加列内容(如果有内容)或者如果列为NULL则附加到空字符串。

UPDATE 
  MyTable 
SET 
  ColumnOne = COALESCE(ColumnOne, '') + 'Milk and Cookies'

如果您正在使用MS Access,则可以使用IIF()和ISNULL()代替。如果值为NULL,则ISNULL返回True,如果不是,则返回False,IIF将第一个选项用于True选项,第二个选项用于False。因此,如果ISNULL返回True,则要使用空字符串;如果返回False,则使用列值(列不为NULL)。将两者结合起来可以得到如下内容:

UPDATE 
  MyTable 
SET 
  ColumnOne = IIF(ISNULL(ColumnOne, '', ColumnOne)) + 'Milk and Cookies'