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

标签 mysql sql stored-procedures

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

例如一般声明是:

更新 XYZ 设置 a = z、b = y、c = x

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

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

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

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

最佳答案

只需使用coalesce():

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

关于mysql - 从存储过程更新,但仅当变量不为空时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263744/

相关文章:

sql - Teradata 转换为 hive sql

php - mysqli where 子句与 php 出现错误

mysql - Mysql触发器,语法错误

php - 根据另一个 mysql 列中的 mysql 值求和 php 数组(从 mysql 结果创建)

mysql - 如何从mysql过程中的表中获取新列?

sql - ORACLE-SQL : stored procedure using array as parameter for select

mysql - 存储过程删除

php - 使用 PHP 从 MySQL Pivot 存储过程中选择

php - MySQL 选择查询 CONVERT_TZ 不起作用

mysql 定位多个分隔符