2017-07-26 20 views
0

私はMySQLで特定の計算を実行する関数を持っています。問題は、いずれかのパラメータの入力がNULLであり、NULLまたは0の場合は、10に値を設定する必要があります。時以来、私はテーブルの上に機能を実行すると、私はNULLとして最終的な値を取得し、とにかく、MySQL関数のパラメータでNULLがチェックされています

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

しかし、私は、関数(val1は、関数の入力パラメータであり、intである)で次のように行きました最後に値が乗算され、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) 
関連する問題