MySQL函数参数检查是否为NULL
问题描述:
我在MySQL中有一个函数来执行特定的计算。事情是,其中一个参数的输入可以是NULL
,我需要检查,如果它是NULL
或0
然后将值设置为10
。我没有在功能配置以下(val1
是输入参数的功能,是int
):MySQL函数参数检查是否为NULL
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)