我在 MySQL 中有一个函数可以执行某些计算。问题是,其中一个参数的输入可以是 NULL,我需要检查它是 NULL 还是 0,然后设置该值到10
。我在函数中执行了以下操作(val1
是函数的输入参数,为 int
):
IF ((val1 is null) OR (val1=0)) THEN
SET val1 = 10;
END IF;
但是,无论如何,当我在表上运行该函数时,我得到的最终值为 NULL
,因为最后这些值会相乘,并且一旦乘以 NULL
> 结果是NULL
。
最佳答案
尝试:
mysql> DROP FUNCTION IF EXISTS `check_null_or_zero`;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION `check_null_or_zero`(`val1` INT)
-> RETURNS INT DETERMINISTIC
-> RETURN IF(`val1` IS NULL OR `val1` = 0, 10, `val1`);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT
-> `check_null_or_zero`(NULL) `null`,
-> `check_null_or_zero`(0) `0`,
-> `check_null_or_zero`(2) `2`,
-> `check_null_or_zero`(10) `10`;
+------+------+------+------+
| null | 0 | 2 | 10 |
+------+------+------+------+
| 10 | 10 | 2 | 10 |
+------+------+------+------+
1 row in set (0.00 sec)
关于MySQL函数参数检查是否为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332539/