【问题标题】:using if else in mysql user defined function在mysql用户定义函数中使用if else
【发布时间】:2020-12-29 10:12:45
【问题描述】:

这是我的查询,它基本上采用两个数字相加并将总和乘以 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 ;

【问题讨论】:

  • NULL 与空字符串不同。
  • ELSE IF 仅应在条件互斥时使用。如果ab 都为空怎么办?
  • 为什么你认为ELSE a=a; 是必要的?为什么你需要为自己分配一个变量。
  • 我只是把 a=a 弄错了,但我已经把它编辑掉了,对于 b="" 和 a=''" 我都没有想到,但是 GMB 提供了一个完美的使用 coalesce() 的解决方案

标签: mysql sql sql-function sql-null mysql-function


【解决方案1】:

我想知道是否有一种方法可以添加一个 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 ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2018-02-26
    相关资源
    最近更新 更多