我在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
这可能吗?
答案 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 end
或isnull(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