MySQL函数参数检查是否为NULL

标签 mysql stored-procedures stored-functions

我在 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/

相关文章:

php - PHP 和 mySql 中的管理员登录页面出错

mysql - 我可以在不知道数据库中 int 当前值的情况下向其添加一些值吗

mysql - 优化 while 循环

mysql - 异常Mysql存储过程调用

c# - Npgsql 按名称将参数传递给存储函数

mysql - 如何创建一个迭代表并采用多个参数的 MySQL 条件函数

php - jQuery UI 自动完成多个远程(JSON、PHP、JS)

php - 本地主机上的mysql程序奇怪的错误

stored-procedures - 带有 jdbc 和存储过程(函数)的 postgresql : ResultSet

mysql - (phpmyadmin)(Mysql数据库)如何限制特定键值的插入次数?