pgsql case when
在 PostgreSQL 数据库中,我们可以使用 CASE WHEN
结构来实现条件判断和分支选择。CASE WHEN
结构可以根据指定的条件表达式,选择并执行不同的分支逻辑。本文将详细介绍 CASE WHEN
结构的语法和用法,并提供一些示例代码供参考。
一、CASE WHEN
语法
CASE WHEN
结构的语法如下所示:
其中:
condition1
,condition2
, … 是条件表达式,用于判断是否满足相应的条件。result1
,result2
, … 是当满足相应条件时的结果。ELSE
子句是可选的,用于指定当条件都不满足时的默认结果。
CASE WHEN
结构可以嵌套使用,也可以在 SELECT
语句中直接使用。
二、CASE WHEN
用法示例
1. 简单示例
我们先来看一个简单的示例,假设有一张 students
表,包含了学生的姓名和年龄信息。我们想将学生的年龄按照以下规则分类:
- 年龄小于 18 岁的学生为 “未成年”
- 年龄介于 18 岁和 22 岁之间的学生为 “青年”
- 年龄大于等于 23 岁的学生为 “成年”
下面是使用 CASE WHEN
结构实现此功能的示例代码:
运行以上代码,将得到如下结果:
2. 复杂条件示例
在实际应用中,我们经常需要处理一些复杂的条件判断。下面我们通过一个示例来演示如何使用 CASE WHEN
结构实现复杂条件判断。
假设有一个 orders
表,包含了订单的信息,其中包括订单号、订单日期和订单金额。我们要将订单按照以下规则分类:
- 订单金额大于等于 1000 的为 “高价订单”
- 订单金额大于等于 500 且小于 1000 的为 “中等订单”
- 订单金额小于 500 的为 “低价订单”
此外,对于今天之前的订单,我们将其金额减半,作为一个新的字段。下面是使用 CASE WHEN
结构实现此功能的示例代码:
运行以上代码,将得到如下结果:
三、CASE WHEN
嵌套使用
CASE WHEN
结构支持嵌套使用,可以根据多个条件进行分支判断。下面是一个示例代码,展示了如何在 CASE WHEN
结构中嵌套使用另一个 CASE WHEN
结构:
运行以上代码,将得到学生的成绩结果信息。
四、总结
本文介绍了 PostgreSQL 数据库中 CASE WHEN
结构的语法和用法,包括简单示例、复杂条件示例以及嵌套使用示例。使用 CASE WHEN
结构可以方便地实现条件判断和分支选择的逻辑。