MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL IF语句

IF语句用于在MySQL中实现基本条件构造的存储程序中。根据特定条件,它允许我们执行一组SQL语句。它返回三个值True,False或NULL之一。
我们可以以三种方式使用此语句: IF-THEN,IF-THEN-ELSE,IF-THEN-ELSEIF-ELSE子句,并且可以以END-IF终止。让我们详细了解每个语句。

IF-THEN语句

此语句执行一组SQL 查询。 IF-THEN语句的语法如下:
if condition THEN 
   statements;
END IF;
在以上语法中,我们必须指定执行代码的条件。如果该语句的值为真,它将在IF-THEN和END-IF之间执行该语句。否则,它将在END-IF之后执行该语句。

示例

IF ... ENDIF块以存储的程序执行,并以分号终止,如下例所示。
DELIMITER $
CREATE PROCEDURE myResult(original_rate NUMERIC(6,2),OUT discount_rate NUMERIC(6,2))
     NO SQL
      BEGIN
         if (original_rate>200) THEN
            SET discount_rate=original_rate*.5;
         END IF;
       select discount_rate;
     END$
DELIMITER $;
接下来,获取两个变量并为两个变量设置值,如下所示:
mysql> set @p = 600;
mysql> set @dp = 500;
现在,调用存储过程函数以检查输出。
mysql> call myResult(@p, @dp)
我们将获得以下输出:
MySQL IF语句

IF-THEN-ELSE语句

如果我们想在IF块中指定的条件未评估为true时执行其他语句,则可以使用此语句。 IF-THEN-ELSE语句的语法如下:
if condition THEN
   statements;
ELSE
   else-statements;
END IF;
在上面的语法中,我们必须指定执行代码的条件。如果该语句的值为真,它将在IF-THEN和ELSE之间执行该语句。否则,它将在ELSE和END-IF之后执行该语句。
让我们修改上面的 myResult()存储过程。因此,首先,使用以下命令删除myResult()存储过程:
Mysql> DROP procedure myResult;
接下来,为此编写新代码,如下所示:
DELIMITER $
CREATE PROCEDURE myResult(original_rate NUMERIC(6,2),OUT discount_rate NUMERIC(6,2))
     NO SQL
      BEGIN
         if (original_rate>200) THEN
            SET discount_rate=original_rate*.5;
    ELSE
            SET discount_rate=original_rate;
         END IF;
       select discount_rate;
     END$
DELIMITER ;
接下来,创建 两个变量,并为两个变量设置值,如下所示:
mysql> set @p = 150;
mysql> set @dp = 180;
现在,调用存储过程函数以获取输出。
mysql> call myResult(@p, @dp)
它将提供以下输出:
MySQL IF语句

IF-THEN-ELSEIF-ELSE语句

如果我们要基于多个条件执行一条语句,则可以使用此语句。 IF-THEN-ELSE语句的语法如下:
if condition THEN
   statements;
ELSEif elseif-condition THEN
   elseif-statements;
...
ELSE
   else-statements;
END IF;
在以上语法中,如果条件成立,它将执行IF-THEN分支。否则,它将评估elseif-condition。当elseif条件变为true时,它将执行elseif语句。如果此条件也为假,它将评估下一个elseif条件。因此,这里我们将评估多个elseif条件,如果IF和ELSE-IF中的任何条件不成立,它将执行ELSE分支的语句。
让我们修改上面的myResult。()存储过程。因此,首先,使用以下命令删除myResult()存储过程:
Mysql> DROP procedure myResult;
接下来,为此编写新代码,如下所示:
DELIMITER $
CREATE PROCEDURE myResult(original_rate NUMERIC(6,2),OUT discount_rate NUMERIC(6,2))
     NO SQL
      BEGIN
         if (original_rate>500) THEN
            SET discount_rate=original_rate*.5;
    ELSEif (original_rate<=500 AND original_rate>250) THEN
            SET discount_rate=original_rate*.8;
    ELSE
            SET discount_rate=original_rate;
         END IF;
       select discount_rate;
     END$
DELIMITER ;
接下来,创建两个变量并为两个变量设置值,如下所示:
mysql> set @p = 150;
mysql> set @dp = 150;
现在,调用存储过程函数以获取输出。
mysql> call myResult(@p, @dp)
它将给出以下输出:
MySQL IF语句

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4