百科网

首页 > 生活常识 > 生活经验

生活经验

SQL中CASE WHEN用法详解

生活经验佚名2023-05-10

CASE WHEN语句是SQL中的条件表达式,它提供了一种简单的方式来根据不同的条件执行不同的操作。在实际情境中,我们可能需要在数据查询中进行一些简单的转换或计算。CASE WHEN就可以方便地帮助我们完成这些工作。接下来,本文将详细解释CASE WHEN语句的用法及其在SQL查询中的应用。

一、CASE WHEN语句的基本结构

CASE WHEN语句的基本结构如下所示:

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2

ELSE resultn

END

这个语法中,我们首先使用CASE关键字开头,然后根据不同的条件使用WHEN关键字,并在每个条件后面指定结果。如果所有条件都不满足,就返回ELSE子句中指定的结果。最后使用END关键字闭合该CASE语句。需要注意的是,条件和结果都可以是任何SQL表达式。

下面是一个简单的例子,它使用CASE WHEN来计算一个学生的成绩:

SELECT name,

CASE

WHEN score >= 90 THEN 'A'

WHEN score >= 80 THEN 'B'

ELSE 'C'

END AS grade

FROM students;

这个查询语句可以将学生的成绩分为A、B和C三个等级。当分数大于等于90时,等级为A;当分数在80到90之间时,等级为B;否则等级为C。

二、在查询中使用CASE WHEN

CASE WHEN语句的主要用途是在查询结果中执行计算或条件转换。下面是一些具体的例子。

1.使用CASE WHEN语句进行数据分组

有时候,我们需要将数据按照某种规则进行分类并分组。在这种情况下,CASE WHEN语句可以派上用场。例如,我们想要基于年龄分组,分成18到25岁、26到35岁、36到45岁和45岁以上等四组。可以使用以下语句:

SELECT

COUNT(*) AS people_count,

CASE

WHEN age >= 18 AND age <= 25 THEN '18-25'

WHEN age > 25 AND age <= 35 THEN '25-35'

WHEN age > 35 AND age <= 45 THEN '36-45'

ELSE '45 '

END AS age_group

FROM people

GROUP BY age_group;

这个查询可以对people表中的人员按照不同的年龄段进行分组,并计算在每个组中人数的总和。

2.使用CASE WHEN语句进行字符转换

在SQL中,有时我们需要将一个字符类型的字段转换为另一种字符类型。例如,我们可能需要替换一些字符或将其转换为大写或小写形式。在这种情况下,可以使用CASE WHEN语句来进行转换。例如,以下语句将people表中的名字转换为大写形式:

SELECT

CASE

WHEN name IS NULL THEN NULL

ELSE UPPER(name)