2017-07-26 120 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)