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;
上述语法中,condition1
、condition2
等是要进行判断的条件表达式。如果条件表达式成立,则执行相应的result1
、result2
等代码块。如果所有的条件表达式都不成立,则执行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
语句的基本语法和用法,并通过一些示例代码演示了其在实际开发中的应用。