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

jam*_*art 2 mysql sql stored-procedures

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

例如一般声明是:

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

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

我不想为每个变量使用 IF,然后构建并连接一条语句或一一更新列...

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

我正在使用MySQL,但不太好用。我不知道以上就是我所追求的,其他搜索被证明是徒劳的。

Gor*_*off 5

只需使用coalesce()

UPDATE XYZ
    SET a = z,
        b = COALESCE(y, b),
        c = x;
Run Code Online (Sandbox Code Playgroud)