MySQL - CASE 语句



MySQL CASE 语句

MySQL 中的 case 语句用于测试值是否与值/条件列表相等。

语法

以下是 CASE 语句的语法:

CASE value
   WHEN [compare_value] THEN result
   [WHEN [compare_value] THEN result ...]
   [ELSE result]
END CASE
Or,
CASE
   WHEN [condition] THEN result
   [WHEN [condition] THEN result ...]
   [ELSE result]
END CASE

示例

以下查询演示了在过程中使用 MySQL CASE 语句:

DELIMITER //
CREATE PROCEDURE case_example(IN degree VARCHAR(20), 
OUT full_form Varchar(50))
   BEGIN
      CASE degree WHEN 'B-Tech' THEN
         SET full_form = 'Bachelor of Technology';
         WHEN 'M-Tech' THEN SET full_form = 'Master of Technology';
         WHEN 'BSC' THEN SET full_form = 'Bachelor of Science';
         WHEN 'MSC' THEN
         SET full_form = 'Master of Science';
         ELSE
         SET full_form = 'Irrelevant';
      END CASE ; 
   END //
DELIMITER ;

您可以使用以下各种输入值来调用上述过程:

DELIMITER ;
CALL case_example ('B-Tech', @test);
SELECT @test;

输出

以下是上述查询的输出:

@test
工学士

让我们使用不同的输入值调用上述过程,如下所示:

CALL case_example ('M-Tech', @test);
SELECT @test;

输出

上述查询产生以下输出:

@test
工学硕士

在以下查询中,我们传递了不同的输入值来调用上述过程:

CALL case_example ('BSC', @test);
SELECT @test;

输出

上述 mysql 查询生成以下输出:

@test
理学士

让我们使用下面显示的不同输入值调用上面创建的过程:

CALL case_example ('MSC', @test);
SELECT @test;

输出

以下是上述查询的输出:

@test
理学硕士

CASE 运算符

MySQL 还有一个 CASE 运算符,它类似于 CASE 语句,唯一的区别是 CASE 语句不允许 ELSE NULL 子句,并且以END CASE结束。而运算符以END结束。

示例

假设我们创建了一个名为 student_info 的表,如下所示:

CREATE TABLE student_info (ID INT, NAME VARCHAR(25), SAL INT, 
EDUCATION VARCHAR(25));

现在,让我们向 student_info 表中插入一些记录:

INSERT INTO student_info VALUES 
(101, 'Raju', 2254, 'B-Tech'),
(101, 'Raju', 2254, 'M-Tech'),
(101, 'Raju', 2254, 'BSC'),
(101, 'Raju', 2254, 'MSC');

如果您验证 EMP 表的内容,您可以观察其内容如下:

select * from student_info;

输出

上述查询生成以下输出:

ID NAME SAL EDUCATION
101 Raju 2254 B-Tech
101 Raju 2254 M-Tech
101 Raju 2254 BSC
101 Raju 2254 MSC

以下查询显示上述表的内容以及使用 CASE 运算符的学位的完整形式:

SELECT ID, NAME, SAL, EDUCATION,
CASE EDUCATION
   WHEN 'B-Tech' THEN 'Bachelor of Technology' 
   WHEN 'M-Tech' THEN 'Master of Technology' 
   WHEN 'BSC' THEN 'Bachelor of Science'
   WHEN 'MSC' THEN 'Master of Science'
   ELSE 'Irrelevant'
END AS FullFORM FROM student_info;

输出

这将产生以下结果:

ID NAME SAL EDUCATION FullForm
101 Raju 2254 B - Tech 工学士
101 Raju 2254 M - Tech 工学硕士
101 Raju 2254 BSC 理学士
101 Raju 2254 MSC 理学硕士
广告

© . All rights reserved.