pg数据库case when

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

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

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

pg数据库case when

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表达式来将余数转换为对应的星期几。

pg数据库case when

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表达式来将员工的名字转换为大写或小写:

pg数据库case when

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)'。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/506303.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年5月21日 19:06
下一篇 2024年5月21日 19:09

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入