pgsql case when

pgsql case when

pgsql case when

PostgreSQL 数据库中,我们可以使用 CASE WHEN 结构来实现条件判断和分支选择。CASE WHEN 结构可以根据指定的条件表达式,选择并执行不同的分支逻辑。本文将详细介绍 CASE WHEN 结构的语法和用法,并提供一些示例代码供参考。

一、CASE WHEN 语法

CASE WHEN 结构的语法如下所示:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END
SQL

其中:

  • condition1, condition2, … 是条件表达式,用于判断是否满足相应的条件。
  • result1, result2, … 是当满足相应条件时的结果。
  • ELSE 子句是可选的,用于指定当条件都不满足时的默认结果。

CASE WHEN 结构可以嵌套使用,也可以在 SELECT 语句中直接使用。

二、CASE WHEN 用法示例

1. 简单示例

我们先来看一个简单的示例,假设有一张 students 表,包含了学生的姓名和年龄信息。我们想将学生的年龄按照以下规则分类:

  • 年龄小于 18 岁的学生为 “未成年”
  • 年龄介于 18 岁和 22 岁之间的学生为 “青年”
  • 年龄大于等于 23 岁的学生为 “成年”

下面是使用 CASE WHEN 结构实现此功能的示例代码:

SELECT
    name,
    age,
    CASE
        WHEN age < 18 THEN '未成年'
        WHEN age >= 18 AND age <= 22 THEN '青年'
        ELSE '成年'
    END AS age_category
FROM
    students;
SQL

运行以上代码,将得到如下结果:

+-------+-----+--------------+
| name  | age | age_category |
+-------+-----+--------------+
| 张三  | 16  | 未成年       |
| 李四  | 20  | 青年         |
| 王五  | 25  | 成年         |
| ...   | ... | ...          |
+-------+-----+--------------+
SQL

2. 复杂条件示例

在实际应用中,我们经常需要处理一些复杂的条件判断。下面我们通过一个示例来演示如何使用 CASE WHEN 结构实现复杂条件判断。

假设有一个 orders 表,包含了订单的信息,其中包括订单号、订单日期和订单金额。我们要将订单按照以下规则分类:

  • 订单金额大于等于 1000 的为 “高价订单”
  • 订单金额大于等于 500 且小于 1000 的为 “中等订单”
  • 订单金额小于 500 的为 “低价订单”

此外,对于今天之前的订单,我们将其金额减半,作为一个新的字段。下面是使用 CASE WHEN 结构实现此功能的示例代码:

SELECT
    order_id,
    order_date,
    order_amount,
    CASE
        WHEN order_date < current_date THEN order_amount / 2
        WHEN order_amount >= 1000 THEN '高价订单'
        WHEN order_amount >= 500 AND order_amount < 1000 THEN '中等订单'
        ELSE '低价订单'
    END AS order_category
FROM
    orders;
SQL

运行以上代码,将得到如下结果:

+----------+------------+--------------+---------------+
| order_id | order_date | order_amount | order_category|
+----------+------------+--------------+---------------+
| 100001   | 2022-01-01 | 1200         | 高价订单      |
| 100002   | 2022-01-02 | 800          | 中等订单      |
| 100003   | 2022-01-03 | 300          | 低价订单      |
| ...      | ...        | ...          | ...           |
+----------+------------+--------------+---------------+
SQL

三、CASE WHEN 嵌套使用

CASE WHEN 结构支持嵌套使用,可以根据多个条件进行分支判断。下面是一个示例代码,展示了如何在 CASE WHEN 结构中嵌套使用另一个 CASE WHEN 结构:

SELECT
    name,
    score,
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 80 AND score < 90 THEN '良好'
        WHEN score >= 70 AND score < 80 THEN '中等'
        ELSE
            CASE
                WHEN score >= 60 AND score < 70 THEN '及格'
                ELSE '不及格'
            END
    END AS result
FROM
    students;
SQL

运行以上代码,将得到学生的成绩结果信息。

四、总结

本文介绍了 PostgreSQL 数据库中 CASE WHEN 结构的语法和用法,包括简单示例、复杂条件示例以及嵌套使用示例。使用 CASE WHEN 结构可以方便地实现条件判断和分支选择的逻辑。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册