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 理學碩士
廣告