PostgreSQL CASE语句

PostgreSQL CASE语句

PostgreSQL CASE语句

PostgreSQL 中,CASE语句是一种灵活的控制流语句,用于根据不同条件执行不同的操作。通过CASE语句,我们可以在查询中进行条件判断,并根据条件的不同返回不同的值。本文将详细介绍 PostgreSQL 中的CASE语句的用法及示例。

简单CASE表达式

首先,我们来看一下简单的CASE表达式的用法。简单CASE表达式用于在指定条件成立时返回一个值。其基本语法如下:

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

下面是一个简单的示例,根据不同成绩返回不同的等级:

SELECT 
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        ELSE 'D'
    END AS grade
FROM 
    students;

假设我们有一个名为 students 的表,包含学生的成绩信息。运行以上查询后,将返回每个学生的成绩等级。例如,如果学生的成绩为85,则输出为B。

搜索CASE表达式

除了简单的CASE表达式外,还可以使用搜索CASE表达式来实现更复杂的条件判断。搜索CASE表达式的语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

下面是一个示例,根据学生的成绩范围返回不同的等级:

SELECT 
    CASE 
        WHEN score BETWEEN 90 AND 100 THEN 'A'
        WHEN score BETWEEN 80 AND 89 THEN 'B'
        WHEN score BETWEEN 70 AND 79 THEN 'C'
        ELSE 'D'
    END AS grade
FROM 
    students;

运行以上查询后,将根据学生成绩在不同范围内返回不同的等级。

嵌套CASE表达式

在 PostgreSQL 中,还可以使用嵌套的CASE表达式来进行复杂的条件判断。嵌套CASE表达式的语法如下:

CASE 
    WHEN condition1 THEN 
        CASE 
            WHEN sub_condition1 THEN result1
            ...
        END
    WHEN condition2 THEN
        CASE
            WHEN sub_condition2 THEN result2
            ...
        END
    ...
    ELSE default_result
END

下面是一个示例,根据学生成绩进行复杂的判断:

SELECT 
    CASE 
        WHEN score >= 80 THEN 
            CASE 
                WHEN score >= 90 THEN 'A+'
                ELSE 'A-'
            END
        ELSE 'B'
    END AS grade
FROM 
    students;

运行以上查询后,将根据学生成绩返回不同的等级,如果成绩在80以上则进一步细分。

使用CASE表达式更新数据

除了在查询中使用CASE表达式外,我们还可以在更新数据时使用CASE表达式来根据条件更新数据。下面是一个示例,将学生成绩在90以上的改为’A+’,在80到89之间的改为’B’:

UPDATE students
SET grade = 
    CASE 
        WHEN score >= 90 THEN 'A+'
        WHEN score >= 80 THEN 'B'
        ELSE grade
    END;

运行以上更新语句后,将会根据条件更新学生的成绩等级。

使用CASE表达式进行分组聚合

最后,我们来看一个使用CASE表达式进行分组聚合的示例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程