pgsql CASE WHEN ELSE详解

pgsql CASE WHEN ELSE详解

pgsql CASE WHEN ELSE详解

1. 简介

在PostgreSQL中,CASE语句是一种条件判断的流程控制语句,可以根据条件的不同执行不同的代码块。CASE语句允许我们根据给定的条件表达式进行比较,并根据不同的情况执行不同的操作。这些条件可以包括等于、大于、小于、不等于等等。

CASE语句有两种形式:简单CASE和搜索CASE。简单CASE是在一个表达式的基础上进行比较,而搜索CASE则可以使用多个表达式进行比较。

在本篇文章中,我们将详细讨论CASE WHEN ELSE语句的使用方法,以及在实际开发中的应用。

2. 语法

CASE WHEN ELSE语句的基本语法如下:

CASE
   WHEN condition1 THEN result1
   WHEN condition2 THEN result2
   ...
   ELSE resultN
END;

上述语法中,condition1condition2等是要进行判断的条件表达式。如果条件表达式成立,则执行相应的result1result2等代码块。如果所有的条件表达式都不成立,则执行ELSE后面的代码块,即resultN

3. 示例

下面通过一些示例来演示CASE WHEN ELSE语句的用法。

3.1 示例1:根据成绩打印评价

假设我们有一个学生成绩表,有三个字段:学生姓名(name)、科目(subject)和得分(score)。我们希望根据不同的分数,打印出相应的评价。

SELECT name, subject, score,
CASE
   WHEN score >= 90 THEN '优秀'
   WHEN score >= 80 THEN '良好'
   WHEN score >= 60 THEN '及格'
   ELSE '不及格'
END AS evaluation
FROM scores;

运行上述代码,我们将获得一个包含每个学生的姓名、科目、得分以及评价的结果集。

3.2 示例2:计算订单金额

假设我们有一个订单表,包含订单编号(order_id)、商品名称(product)、单价(price)和数量(quantity)字段。我们希望计算每个订单的总金额,并将结果作为新的字段添加到结果集中。

SELECT order_id, product, price, quantity,
CASE
   WHEN quantity <= 10 THEN price * quantity
   WHEN quantity > 10 AND quantity <= 50 THEN price * quantity * 0.9
   ELSE price * quantity * 0.8
END AS total_amount
FROM orders;

上述代码中,我们使用CASE WHEN ELSE语句根据数量不同计算订单的总金额。如果数量小于等于10,那么总金额就是单价乘以数量;如果数量在10和50之间,那么总金额打9折;如果数量大于50,那么总金额打8折。最后,我们将计算的总金额作为新的字段添加到结果集中。

4. 总结

CASE WHEN ELSE语句是PostgreSQL中一种常用的条件流程控制语句,允许我们根据不同的条件进行不同的操作。通过本文的介绍,我们了解了CASE WHEN ELSE语句的基本语法和用法,并通过一些示例代码演示了其在实际开发中的应用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程