mysql - mysql存储过程中复合IF语句

标签 mysql

我有一个 mysql 存储过程,我想在其中编写复合 If 语句。设a、b、c为变量,那么下面的if将按什么顺序执行。

  IF (a AND c=0) OR (b AND c=0) OR (!a AND !b) THEN
    execute the code....

上面的 If 语句不能正常工作。声明有问题吗? 我实际上想知道 AND、OR 运算符的优先级。

最佳答案

我想你想要:

IF (a IS NOT NULL AND c=0) OR (b IS NOT NULL AND c=0) OR (a IS NOT NULL AND b IS NOT NULL) THEN
execute the code....

在 SQL 中,NULL 的作用与 FALSE 不同; SQL 使用三态逻辑,其中表达式可以是 TRUEFALSENULL,并且所有比较都与 NULL > 是FALSE。请参阅文档 Working with NULL Values .

关于mysql - mysql存储过程中复合IF语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035759/

相关文章:

PHP 准备语句总是返回 1

java - HQL 等价于 hibernate 中标准查询的多对多关系查询?

php - MySQL SUM 直到每年的特定日期

php - 使用 select last_insert_id() from php 不工作

php - ALTER TABLE 表 AUTO_INCREMENT = $x

java - 如何在java中为Web服务创建函数来获取我的sql值

MySQL 表触发器正确语法

php - sql语句查询计数数据

MySQL 正则表达式语句

c# - 为什么这个 Entity Framework 数据库更新这么慢?