更新SQL中的列

时间:2014-10-23 00:02:56

标签: sql sql-update

我在SQL中有一个表,其名称为Pagos

这样的事情:

Clave  Neto  Val1  Val2
-----------------------    
  01   NULL  NULL     5
  02   NULL     3  NULL
  03      1  NULL  NULL
  04   NULL  NULL  NULL

我想用SQL Update命令做这样的事情:

Update Table1 
Set Neto = 0 WHERE Neto IS NULL, 
    Val1 = 0 WHERE Val1 IS NULL, 
    Val2 = 0 WHERE Val2 IS NULL

这可能吗?

2 个答案:

答案 0 :(得分:2)

如果您的SQL实例支持COALESCE,那么您可以使用:

UPDATE Pagos
SET
Neto = COALESCE(Neto, 0),
Val1 = COALESCE(Val1, 0),
Val2 = COALESCE(Val2, 0);
如果COALESCE(x, y, ...)不为空,则

x将返回x,否则如果y不为空,则会返回y,依此类推。

在其他版本的SQL中,COALESCE有相同的功能。这是他们的链接: http://www.w3schools.com/sql/sql_isnull.asp

答案 1 :(得分:1)

假设MS SQL Server:

update Pagos
set 
    Neto = case when Neto is null then 0 else Neto end,
    Val1 = case when Val1 is null then 0 else Val1 end,
    Val2 = case when Val2 is null then 0 else Val2 end
where Neto is null or Val1 is null or Val2 is null

您可以使用case when Neto is null then 0 else Neto endisnull(Neto,0)而不是coalesce(Neto,0),而使用函数可以完全相同。

实际上不需要where子句,但通过排除没有列为空的行来节省一些时间。

结果:

Clave   Neto    Val1    Val2
01      0       0       5
02      0       3       0
03      1       0       0
04      0       0       0