在mysql用户定义函数中使用if else

问题描述

这是我的查询,基本上需要将两个数字相加并将它们相加10。

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
RETURN ROUND((a+b)*10/9);
END $$
DELIMITER ;

一切正常,但是我想知道是否有办法添加IF ELSE 检查输入的任何值是否为null,如果是,则为null赋值为零

我已经尝试过,但是遇到错误

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
IF (a = "") then
a=0;
ELSE IF (b = "")
b=0;
ELSE
END IF;
RETURN ROUND((a+b)*10/9);
END $$
DELIMITER ;

解决方法

我想知道是否可以添加IF ELSE来检查输入的任何值是否为null,是否为空值赋值为零

您可以仅使用coalesce()null参数分配默认值:

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
    RETURN ROUND((COALESCE(a,0) + COALESCE(b,0)) * 10 / 9);
END $$
DELIMITER ;

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...