关于sql:select语句中的case

  • Post category:other

在SQL中,SELECT语句中的CASE表达式可以根据条件返回不同的值。CASE表达式可以用于SELECT语句中的任何位置,包括SELECT列表、WHERE子句和ORDER BY子句。以下是关于SQL中SELECT语句的CASE表达式的完整攻略,包括语法、用法和两个示例说明。

语法

在SELECT语句中使用CASE达式的语法如下:

SELECT
  column1,
  column2,
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
  END AS alias
FROM table_name;

在上面的语法中,column1column2是要查询的列名,condition1condition2是条件,result1result2是与条件匹的结果,default_result是当没有条件匹配时的默认结果,alias是结果列的别名。

用法

CASE表达式可以用于SELECT语句中的任何位置,包括SELECT列表、WHERE子句和ORDER BY子句。以下是一些常见的用法:

在SELECT列表中使用CASE表达式

在SELECT列表中使用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列的值转换为MaleFemaleUnknown

在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表达式过滤了genderMsalary大于50000或genderFsalary大于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列的值转换为CheapModerateExpensive

示例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表达式的完整攻略,包括语法、用法和两个示例说明。