2017-07-26 119 views
0

我在MySQL中有一个函数来执行特定的计算。事情是,其中一个参数的输入可以是NULL,我需要检查,如果它是NULL0然后将值设置为10。我没有在功能配置以下(val1是输入参数的功能,是int):MySQL函数参数检查是否为NULL

IF ((val1 is null) OR (val1=0)) THEN 
    SET val1 = 10; 
END IF; 

但是,不管怎么说,当我运行在桌子上的功能,我得到一个最终的值作为NULL,因为在结尾的值相乘,一旦乘以NULL结果为NULL

回答

0

尝试:

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)