📜  SQL |案例陈述

📅  最后修改于: 2022-05-13 01:55:49.023000             🧑  作者: Mango

SQL |案例陈述


控制语句构成了大多数语言的核心,因为它们控制其他语句集的执行。这些也可以在 SQL 中找到,并且应该通过仔细选择符合我们要求的元组来用于查询过滤和查询优化等用途。在这篇文章中,我们将探讨 SQL 中的 Case-Switch 语句。
CASE 语句是 SQL 处理 if/then 逻辑的方式。
句法:
可以有两种有效的方式来处理 case-switch 语句。

  1. 第一个接受一个名为 case_value 的变量并将其与一些 statement_list 匹配。
    CASE case_value
        WHEN when_value THEN statement_list
        [WHEN when_value THEN statement_list] ...
        [ELSE statement_list]
    END CASE
    
  2. 第二个考虑 search_condition 而不是变量相等,并相应地执行 statement_list。

    CASE
        WHEN search_condition THEN statement_list
        [WHEN search_condition THEN statement_list] ...
        [ELSE statement_list]
    END CASE
    

    例子:

    假设我们有关系,教员。

    教师表:

    FacultyIDNameDepartmentGender
    001AakashCSM
    002SahilECM
    003JohnHSSM
    004ShelleyCSF
    005AnannyaCSF
    006SiaHSSF

    假设我们想修改这个表,如果部门名称是'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
    

    输出:

    FacultyIDNameDepartmentGender
    001AakashCSMale
    002SahilECMale
    003JohnHSSMale
    004ShelleyCSFemale
    005AnannyaCSFemale
    006SiaHSSFemale

    考虑 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 表中的元组进行排序。