从存储过程更新但仅在变量不为空时

时间:2018-01-15 13:14:24

标签: mysql sql stored-procedures

是否有一种简单的方法可以在存储过程中执行单个更新语句,我们可以忽略符合某种条件的变量?

E.g。一般声明是:

UPDATE XYZ SET a = z, b = y, c = x

但如果y为NULL,那么它会忽略语句的b = y段吗?

我不希望我们为每个变量提供IF,然后构建并连接一个语句或逐个更新列...

我看了Here,它似乎在正确的轨道上,但我认为如果它的NULL更新值,而不是变量本身为空?!

我使用MySQL,但不是很好。而且我不知道以上是我所追求的,其他搜索也没有结果。

1 个答案:

答案 0 :(得分:2)

只需使用coalesce()

UPDATE XYZ
    SET a = z,
        b = COALESCE(y, b),
        c = x;