深入理解CASE WHEN THEN ELSE END:基础概念、建表语句与用例讲解
2024.01.22 13:47浏览量:13简介:本文将深入探讨CASE WHEN THEN ELSE END语句在数据库查询中的基础概念、建表语句以及用例讲解,帮助读者更好地理解和应用这个强大的SQL功能。
在数据库查询中,CASE WHEN THEN ELSE END语句是一种条件逻辑结构,用于根据条件对数据进行分类或转换。通过这个语句,我们可以基于多个条件执行不同的操作,并返回相应的结果。CASE语句提供了很大的灵活性,可以在SELECT、UPDATE、DELETE等语句中使用。
一、基础概念
CASE语句有两种形式:简单CASE表达式和搜索CASE表达式。
- 简单CASE表达式:基于表达式的值进行条件判断。
- 搜索CASE表达式:基于列的值进行条件判断。
二、建表语句
为了演示CASE WHEN THEN ELSE END语句的用法,我们首先需要创建一个示例表。下面是一个简单的建表语句示例:
上述建表语句创建了一个名为CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2),
department VARCHAR(50)
);
employees
的表,包含id
、name
、salary
和department
四个列。接下来,我们将通过插入数据来为这个表填充示例数据。
三、用例讲解 - 简单CASE表达式示例:假设我们要根据薪水将员工分为不同的级别。可以使用简单CASE表达式来实现这一需求。以下是相应的SQL查询:
上述查询将返回员工的姓名、薪水以及根据薪水划分的级别。如果薪水低于3000,则级别为’Low’;如果薪水在3000到6000之间,则级别为’Medium’;如果薪水高于6000,则级别为’High’;否则,级别为’Unknown’。SELECT
name,
salary,
CASE
WHEN salary < 3000 THEN 'Low'
WHEN salary BETWEEN 3000 AND 6000 THEN 'Medium'
WHEN salary > 6000 THEN 'High'
ELSE 'Unknown'
END AS salary_level
FROM employees;
- 搜索CASE表达式示例:假设我们要根据员工所在的部门来分配不同的奖金系数。可以使用搜索CASE表达式来实现这一需求。以下是相应的SQL查询:
上述查询将返回员工的姓名、所在部门、薪水以及根据部门分配的奖金系数计算的奖金金额。如果员工在Sales部门,则奖金系数为1.1;如果员工在Marketing部门,则奖金系数为1.05;否则,奖金系数为1.0(即没有额外的奖金)。SELECT
name,
department,
salary,
CASE
WHEN department = 'Sales' THEN salary * 1.10
WHEN department = 'Marketing' THEN salary * 1.05
ELSE salary * 1.00
END AS bonus
FROM employees;
发表评论
登录后可评论,请前往 登录 或 注册