SQL |案例陈述
控制语句构成了大多数语言的核心,因为它们控制其他语句集的执行。这些也可以在 SQL 中找到,并且应该通过仔细选择符合我们要求的元组来用于查询过滤和查询优化等用途。在这篇文章中,我们将探讨 SQL 中的 Case-Switch 语句。
CASE 语句是 SQL 处理 if/then 逻辑的方式。
句法:
可以有两种有效的方式来处理 case-switch 语句。
- 第一个接受一个名为 case_value 的变量并将其与一些 statement_list 匹配。
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE
第二个考虑 search_condition 而不是变量相等,并相应地执行 statement_list。
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE
例子:
假设我们有关系,教员。
教师表:
FacultyID Name Department Gender 001 Aakash CS M 002 Sahil EC M 003 John HSS M 004 Shelley CS F 005 Anannya CS F 006 Sia HSS F 假设我们想修改这个表,如果部门名称是'CS',它被修改为'Computer Science',如果它是'EC',它被修改为'Electronics and Communication',如果它是' HSS'它被修改为'人文和社会科学'。这可以使用 case 语句来实现。
示例查询:
考虑一个变量,department_name,它是在 SQL 代码中输入的。CASE department_name WHEN 'CS' THEN UPDATE Faculty SET department='Computer Science'; WHEN 'EC' THEN UPDATE Faculty SET department='Electronics and Communication'; ELSE UPDATE Faculty SET department='Humanities and Social Sciences'; END CASE
输出:
The department name corresponding to the given input gets renamed.
考虑另一个查询,它选择与 Faculty 表对应的所有字段。由于写入 Gender 字段的值是单字符值 (M/F),我们希望以更易读的格式呈现它们。
SELECT FacultyID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Faculty
输出:
FacultyID Name Department Gender 001 Aakash CS Male 002 Sahil EC Male 003 John HSS Male 004 Shelley CS Female 005 Anannya CS Female 006 Sia HSS Female 考虑 SQL 自定义排序中 case-switch 的另一个应用。
CREATE PROCEDURE GetFaculty(@ColToSort varchar(150)) AS SELECT FacultyID, Name, Gender, Department FROM Customers ORDER BY CASE WHEN @ColToSort='Department' THEN Department WHEN @ColToSort='Name' THEN Name WHEN @ColToSort='Gender' THEN Gender ElSE FacultyID END
输出:
The output gets sorted according to the provided field.
上述过程(函数)以一个 varchar 数据类型的变量作为参数,并在此基础上对 Faculty 表中的元组进行排序。