【问题标题】:Updating from stored procedure but only if variable is not null从存储过程更新但仅当变量不为空时
【发布时间】:2018-01-15 13:14:23
【问题描述】:

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

例如一般陈述是:

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

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

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

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

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

【问题讨论】:

    标签: mysql sql stored-procedures


    【解决方案1】:

    只需使用coalesce():

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

    【讨论】:

    • 是的,谢谢,我会尽快将其标记为正确。我刚刚意识到 COALESCE 正是我想要的。我想我提供的链接可能意味着这是一个重复的问题。
    • 我打算建议一个案例陈述,但这更优雅+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2016-12-15
    • 2013-08-16
    相关资源
    最近更新 更多