MySQL - IF语句

MySQL - IF语句 首页 / 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;

在上面的语法中,必须指定执行代码的条件。如果该语句的值为true,它将在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;

在上面的语法中,必须指定执行代码的条件。如果该语句的值为true,将在IF-THEN和ELSE之间执行该语句。否则,将执行ELSE和END-IF之后的语句。

让无涯教程修改上面的 myResult()存储过程。因此,首先,使用以下命令删除myResult()存储过程:

Mysql> DROP procedure myResult;

接下来,为此编写新代码,如下所示:

接下来,创建两个变量并为其设置值,如下所示:

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;

在上述语法中,如果条件为true,它将执行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声明

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出gRPC -〔李林锋〕

数据结构与算法之美 -〔王争〕

OpenResty从入门到实战 -〔温铭〕

Flutter核心技术与实战 -〔陈航〕

深入浅出云计算 -〔何恺铎〕

编译原理实战课 -〔宫文学〕

人人都用得上的写作课 -〔涵柏〕

Go 语言项目开发实战 -〔孔令飞〕

零基础GPT应用入门课 -〔林健(键盘)〕

好记忆不如烂笔头。留下您的足迹吧 :)