0

这是我的查询,它基本上需要两个数字,将它们相加并将总和乘以 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 来检查输入的任何值是否为空,如果是,则为空值分配零值

我已经尝试过了,但我收到了一个错误

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 ;
4

1 回答 1

2

我想知道是否有一种方法可以添加一个 IF ELSE 来检查输入的任何值是否为空,如果是,则为空值分配零值

您可以只使用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 ;
于 2020-09-10T21:08:59.107 回答