MYSQL:只更新非空字段的最有效方法?

时间:2013-02-25 06:46:46

标签: mysql sql sql-update

假设我有这张表:

ID | col1 | col2 | col3 | col4
1  |  val |      |  val |

有没有办法修改此查询:

UPDATE table set col1 = "bla", col2 = "bla", col3 = "bla", col4 = "bla where id = 1

所以我最终得到:

ID | col1 | col2 | col3 | col4
1  |  val |  bla |  val |  bla

换句话说,查询必须只更新非空字段。你是怎么做到的?

2 个答案:

答案 0 :(得分:8)

最简单的答案是使用COALESCE

UPDATE table 
set     col1 = COALESCE(col1,"bla"), 
        col2 = COALESCE(col2,"bla"), 
        col3 = COALESCE(col3,"bla"), 
        col4 = COALESCE(col4,"bla")
where   id = 1

其他链接。

答案 1 :(得分:0)

代替Coalesce,您也可以使用IsNUll,coalesce和isnull在很多方面都是等价的

Update Table
set col1 = Isnull(col1,'bla'),...

当然如果RD希望它也适用于空字符串,那么JW已经给出了解决方案