case when then else

在SQL中,CASE WHEN THEN ELSE 是一种条件语句,用于根据一个或多个条件返回不同的结果。这种语句有两种格式:

  1. 简单Case函数
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE result_default
    END
    ```

2. **Case搜索函数** <b class="card40_249__sup_a7f6" data-sup="sup">1</b>:

```sql
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
    END
    ```

这两种格式在功能上是等价的,但简单Case函数在处理多个条件时更为直观和易读。

### 示例

假设我们有一个员工表 `empinfo`,其中包含员工的性别信息,我们想要根据性别返回不同的称呼:

```sql
SELECT
    empno,
    empname,
    age,
    salary,
    CASE
        WHEN sex = '1' THEN '男'
        WHEN sex = '2' THEN '女'
        ELSE '其他'
    END AS gender
FROM
    empinfo;

在这个查询中,CASE 语句会根据 sex 列的值返回相应的称呼。如果 sex 是 '1',则返回 '男';如果 sex 是 '2',则返回 '女';否则返回 '其他'。

注意事项

  1. 条件优先级 :在多个 WHEN 子句中,数据库会按照从左到右的顺序评估条件,一旦找到第一个匹配的条件,就会返回对应的结果,并停止评估后续的条件。

  2. 结果集CASE 语句可以嵌套在 SELECT 语句中,用于生成更复杂的结果集。

建议

在实际应用中,建议使用简单Case函数,因为它在处理多个条件时更为直观和易读。同时,确保每个 WHEN 子句中的条件是互斥的,即每个条件只有在前面的条件都不满足时才会被评估。

Top