pgsql的case when

在 PostgreSQL 中,CASE WHEN 语句用于根据条件选择不同的结果。它类似于其他编程语言中的if-else语句,但更加灵活和强大。CASE WHEN语句让我们可以在一个查询中进行多个条件的判断,并根据不同的条件返回不同的结果。
语法
CASE WHEN语句的基本语法如下:
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE else_result
END
在上面的语法中,CASE表示开始CASE WHEN语句,WHEN用于指定条件,然后根据条件是否满足来执行相应的结果。ELSE关键字用来指定所有条件都不满足时的默认结果。
示例
让我们通过几个示例来演示CASE WHEN语句的使用。
示例1:根据成绩等级判断学生表现
假设我们有一个学生成绩表(grades),包含学生的姓名和分数。我们想根据学生成绩的不同,给出不同的评级。
CREATE TABLE grades (
student_name VARCHAR(50),
score INT
);
INSERT INTO grades (student_name, score) VALUES ('Alice', 80);
INSERT INTO grades (student_name, score) VALUES ('Bob', 90);
INSERT INTO grades (student_name, score) VALUES ('Charlie', 60);
INSERT INTO grades (student_name, score) VALUES ('David', 75);
INSERT INTO grades (student_name, score) VALUES ('Emily', 95);
SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM grades;
运行上面的查询后,我们会得到每个学生的姓名、分数和对应的评级,如下所示:
| student_name | score | grade |
|--------------|-------|-------|
| Alice | 80 | B |
| Bob | 90 | A |
| Charlie | 60 | D |
| David | 75 | C |
| Emily | 95 | A |
从上面结果可以看出,根据学生的分数,我们成功地给出了每个学生的成绩评级。
示例2:根据性别显示不同的称呼
假设我们有一个员工表(employees),包含员工的姓名和性别。我们想根据员工的性别显示不同的称呼。
CREATE TABLE employees (
employee_name VARCHAR(50),
gender VARCHAR(10)
);
INSERT INTO employees (employee_name, gender) VALUES ('Alice', 'Female');
INSERT INTO employees (employee_name, gender) VALUES ('Bob', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('Charlie', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('David', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('Emily', 'Female');
SELECT
employee_name,
gender,
CASE
WHEN gender = 'Male' THEN 'Mr. ' || employee_name
WHEN gender = 'Female' THEN 'Ms. ' || employee_name
ELSE employee_name
END AS salutation
FROM employees;
运行上面的查询后,我们会得到每个员工的姓名、性别和对应的称呼,如下所示:
| employee_name | gender | salutation |
|---------------|--------|------------|
| Alice | Female | Ms. Alice |
| Bob | Male | Mr. Bob |
| Charlie | Male | Mr. Charlie|
| David | Male | Mr. David |
| Emily | Female | Ms. Emily |
从上面结果可以看出,根据员工的性别,我们成功地给出了每个员工的称呼。
总结
通过上面的示例,我们详细介绍了 PostgreSQL 中CASE WHEN语句的用法和语法结构,以及在实际场景中的应用。CASE WHEN语句可以轻松实现复杂的条件判断,并根据不同的条件返回不同的结果,提高了查询的灵活性和可读性。在实际开发中,CASE WHEN是一个非常强大和常用的功能,能够帮助我们快速解决各种复杂的条件判断问题。
极客教程