欢迎光临
我们一直在努力

pg数据库case when

在PostgreSQL数据库中,使用CASE WHEN语句可以实现条件判断。语法如下:,,“sql,CASE, WHEN condition1 THEN result1, WHEN condition2 THEN result2, ..., ELSE resultN,END;,

PostgreSQL数据库基础之case用法详细说明

在PostgreSQL中,CASE表达式是一种非常强大的工具,它允许我们在查询中进行条件逻辑,CASE表达式的基本语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE resultN
END

在这个语法中,condition1, condition2, … 是我们要检查的条件,result1, result2, … 是当这些条件满足时返回的结果,如果没有任何条件满足,那么将返回 ELSE 子句中的结果,如果没有 ELSE 子句,那么将返回 NULL。

下面我们通过一些例子来详细解释CASE表达式的用法。

1. 简单的CASE表达式

最简单的CASE表达式只包含一个条件和一个结果,我们可以使用CASE表达式来将数字转换为对应的星期几:

SELECT number, CASE number % 7 
                      WHEN 0 THEN 'Sunday'
                      WHEN 1 THEN 'Monday'
                      WHEN 2 THEN 'Tuesday'
                      WHEN 3 THEN 'Wednesday'
                      WHEN 4 THEN 'Thursday'
                      WHEN 5 THEN 'Friday'
                      WHEN 6 THEN 'Saturday'
                    END as day_of_week
FROM numbers;

在这个例子中,我们使用了 number % 7 来计算数字除以7的余数,然后使用CASE表达式来将余数转换为对应的星期几。

2. 带有多个条件的CASE表达式

CASE表达式也可以包含多个条件和结果,我们可以使用CASE表达式来根据员工的绩效等级给他们分配奖金:

SELECT employee_id, performance_level, CASE performance_level
                                      WHEN 'A' THEN '5000'
                                      WHEN 'B' THEN '3000'
                                      WHEN 'C' THEN '1000'
                                      ELSE 'No bonus'
                                  END as bonus
FROM employees;

在这个例子中,我们使用了CASE表达式来根据员工的绩效等级给他们分配不同的奖金,如果绩效等级为 ‘A’,则奖金为5000;如果绩效等级为 ‘B’,则奖金为3000;如果绩效等级为 ‘C’,则奖金为1000;如果绩效等级不是这三个中的任何一个,那么就没有奖金。

3. 使用搜索函数的CASE表达式

CASE表达式还可以与搜索函数一起使用,LOWER(), UPPER(), SUBSTRING() 等,我们可以使用CASE表达式来将员工的名字转换为大写或小写:

SELECT employee_id, name, CASE LOWER(name) = name THEN name ELSE name || ' (uppercase)' END as uppercase_name, CASE UPPER(name) = name THEN name ELSE name || ' (lowercase)' END as lowercase_name
FROM employees;

在这个例子中,我们使用了 LOWER() 函数来将员工的名字转换为小写,然后使用CASE表达式来判断名字是否已经是小写,如果是,那么就直接返回名字;如果不是,那么就返回名字加上 ‘ (lowercase)’,我们还使用了 UPPER() 函数来将员工的名字转换为大写,然后使用CASE表达式来判断名字是否已经是大写,如果是,那么就直接返回名字;如果不是,那么就返回名字加上 ‘ (uppercase)’。

4. CASE表达式的其他用途

除了上述的用途,CASE表达式还有很多其他的用途,我们可以使用CASE表达式来进行数据类型转换,或者进行复杂的条件逻辑等,我们可以使用CASE表达式来将日期转换为对应的月份:

SELECT date, CASE TO_CHAR(date, 'Month') 
                  WHEN 'January' THEN '1'
                  WHEN 'February' THEN '2'
                  WHEN 'March' THEN '3'
                  ...
                  ELSE TO_CHAR(date, 'Month') || ' (unknown)'
                END as month_number
FROM dates;

在这个例子中,我们使用了 TO_CHAR() 函数来将日期转换为字符串,然后使用CASE表达式来判断这个字符串是否表示一个已知的月份,如果是,那么就直接返回对应的月份编号;如果不是,那么就返回月份编号加上 ‘ (unknown)’。

赞(0) 打赏
未经允许不得转载:九八云安全 » pg数据库case when

评论 抢沙发