在SQL中,SELECT语句中的CASE表达式可以根据条件返回不同的值。CASE表达式可以用于SELECT语句中的任何位置,包括SELECT列表、WHERE子句和ORDER BY子句。以下是关于SQL中SELECT语句的CASE表达式的完整攻略,包括语法、用法和两个示例说明。
语法
在SELECT语句中使用CASE达式的语法如下:
SELECT
1,
column2,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END AS alias
FROM table_name;
在上面的语法中,column1
和column2
是要查询的列名,condition1
和condition2
是条件,result1
和result2
是与条件匹的结果,default_result是当没有条件匹配时的默认结果,
alias`是结果列的别名。
用法
CASE表达式可以用于SELECT语句中的任何位置,包括SELECT列表、WHERE子句和ORDER BY子句。以下是一些常见的用法:
在SELECT列表中使用CASE表达式
在列表中使用CASE表达式可以根据返回不同的值。以下是一个示例:
SELECT
first_name,
last_name,
CASE
WHEN gender = 'M' THEN 'Male'
WHEN gender = 'F' THEN 'Female'
ELSE 'Unknown'
END AS gender
FROM employees;
在上面的示例中,我们使用CASE表达式将gender
列的值转换为Male
、Female
或Unknown
。
在WHERE子句中使用CASE表达式
在WHERE子句中使用CASE表达式可以根据条件过滤数据以下是一个示例:
SELECT
first_name,
last_name,
gender
FROM employees
WHERE
CASE
WHEN gender = 'M' AND salary > 50000 THEN 1
WHEN gender = 'F' AND salary > 60000 THEN 1
ELSE 0
END = 1;
在上面的示例中,我们使用CASE表达式过滤了gender
为M
且salary
大于50000或gender
为F
且``大于60000的数据。
在ORDER BY子句中使用CASE表达式
在ORDER BY子句中使用CASE表达式可以根据条件对结果进行排序。以下是一个示例:
SELECT
first_name,
last_name,
salary
FROM employees
ORDER BY
CASE
WHEN salary < 50000 THEN 1 WHEN salary >= 50000 AND salary < 100000 THEN 2
ELSE 3
END,
last_name,
first_name;
在上面的示例中,我们使用CASE表达式对salary
列进行排序,将salary
小于50000的数据排在前面,将salary
在50000到100000之间的数据排在中间,将salary
大于100000的数据排在后面。
示例1:在SELECT列表中使用CASE表达式
以下是一个示例,示了如何在SELECT列表中使用CASE表达式:
SELECT
product_name,
unit_price,
CASE
WHEN unit_price < 10 THEN 'Cheap'
WHEN unit_price >= 10 AND unit_price < 50 THEN 'Moderate'
ELSE 'Expensive'
END AS price_category
FROM products;
在上面的示例中,我们使用CASE表达式将unit_price
列的值转换为Cheap
、Moderate
或Expensive
。
示例2:在WHERE子句中使用CASE表达式
以下是一个示例,演示了如何在WHERE子句中使用CASE表达式:
SELECT
product_name,
unit_price
FROM products
WHERE
CASE
WHEN unit_price < 10 THEN 1
WHEN unit_price >= 10 AND unit_price < 50 THEN 2
ELSE 3
END = 2;
在上面的示例中,我们使用CASE表达式过滤了unit_price
在10到50之间的数据。
以上是关于SQL中SELECT语句中的CASE表达式完整攻略,包括语法、用法和两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于sql:select语句中的case - Python技术站