百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

PgSQL必备技能之case when使用详解

liuian 2025-07-06 14:03 2 浏览

case when功能

在SQL中case when的使用场景比较多,主要包括:

1、字段值转换

数据库中保存的字段值是英文,需要转换为中文再展示

2、业务逻辑判断

根据业务判断逻辑推导结论,例如根据身高、性别、体重等字段数据,判断是否肥胖

3、NULL值等特定值处理

为了方便数据分析等,对字段的特殊值进行处理,例如把null值修改为0等。

case when语法结构

case when有两种语法结构

简单语法结构

 case 字段名  when 条件值1 then 对应值1
              when 条件值2 then 对应值2
                         ......
              else 默认值 end

简单举例如下:

case fruit when 'apple' then '苹果'
                when 'orange' then '橙子'
                when 'banana' then '香蕉'
                else '其它' end

通用语法结构

case when 条件值1 then 对应值1
   when 条件值2 then 对应值2
         .......
   else 默认值 end

简单举例如下:

case when gmv > 100 then '优秀'
         when gmv > 80 then '良好'
         when gmv > 60 then '及格'
         else '不及格' end

case when 使用说明

1、当有一个when条件符合要求时,就会返回对应的then值,后面的when条件不再执行;

2、如果有多个when条件,前面的when条件范围的反面,会隐含地作为后面when条件的一个条件子项;

3、如果所有的when条件都不符合要求,就会返回最后的else值。

case when 进阶用法

1、case when嵌套

case when category = 'fruit' then case when name = 'apple' then '苹果'
                                                               when name = 'orange' then '橙子'
                                                               when name = 'banana' then '香蕉'
                                                               else '其它水果' end
        else '非水果' end

2、order by个性化排序

SELECT
CountryCode,
count(*)
FROM city
GROUP BY CountryCode
ORDER BY case when CountryCode = 'AGO' then 1 
                          when CountryCode = 'ARG' then 2 
                          else 99 end

#PostgreSQL##PgSQL#

相关推荐

MySQL合集-mysql5.7及mysql8的一些特性

1、Json支持及虚拟列1.1jsonJson在5.7.8原生支持,在8.0引入了json字段的部分更新(jsonpartialupdate)以及两个聚合函数,JSON_OBJECTAGG,JS...

MySQL 双表架构在房产中介房源管理中的深度实践

MySQL房源与价格双表封神:降价提醒实时推送客户房产中介实战:MySQL空间函数精准定位学区房MySQL狠招:JSON字段实现房源标签自由组合筛选房源信息与价格变更联动:MySQL黄金搭档解决客户看...

MySQL 5.7 JSON 数据类型使用总结

从MySQL5.7.8开始,MySQL支持原生的JSON数据类型。MySQL支持RFC7159定义的全部json数据类型,具体的包含四种基本类型(strings,numbers,boolea...

MySQL 8.0 SQL优化黑科技,面试官都不一定知道!

前言提到SQL优化,大多数人想到的还是那些经典套路:建索引、避免全表扫描、优化JOIN顺序…这些确实是基础,但如果你还停留在MySQL5.7时代的优化思维,那就out了。MySQL8.0已经发布好...

如何在 MySQL 中使用 JSON 数据(mysql的json函数与实例)

在MySQL中学习“NoSQL”MySQL从5.7版本开始就支持JSON格式的数据类型,该数据类型支持JSON文档的自动验证和优化存储和访问。尽管JSON数据最好存储在MongoDB等...

MySQL中JSON的存储原理(mysql中json字段操作)

前言:表中有json字段后,非索引查询性能变得非常糟糕起因是我有一张表,里面有json字段后,而当mysql表中有200w数据的时候,走非索引查询性能变得非常糟糕需要3到5s。因此对mysql的jso...

mysql 之json字段详解(多层复杂检索)

MySQL5.7.8开始支持JSON数据类型。MySQL8.0版本中增加了对JSON类型的索引支持。示例表CREATETABLE`users`(`id`intNOTNULLAU...

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...

Spring Boot 3.x 新特性详解:从基础到高级实战

1.SpringBoot3.x简介与核心特性1.1SpringBoot3.x新特性概览SpringBoot3.x是建立在SpringFramework6.0基础上的重大版...

如何设计Agent的记忆系统(agent记忆方法)

最近看了一张画Agent记忆分类的图我觉得分类分的还可以,但是太浅了,于是就着它的逻辑,仔细得写了一下在不同的记忆层,该如何设计和选型先从流程,作用,实力和持续时间的这4个维度来解释一下这几种记忆:1...

Spring Boot整合MyBatis全面指南:从基础到高级应用(全网最全)

一、基础概念与配置1.1SpringBoot与MyBatis简介技术描述优点SpringBoot简化Spring应用开发的框架,提供自动配置、快速启动等特性快速开发、内嵌服务器、自动配置、无需X...

5大主流方案对比:MySQL千亿级数据线上平滑扩容实战

一、扩容方案剖析1、扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据...

PostgreSQL 技术内幕(五)Greenplum-Interconnect模块

Greenplum是在开源PostgreSQL的基础上,采用MPP架构的关系型分布式数据库。Greenplum被业界认为是最快最具性价比的数据库,具有强大的大规模数据分析任务处理能力。Greenplu...

在实际操作过程中如何避免出现SQL注入漏洞

一前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案。二SQL注入漏洞的原理、形...

运维从头到尾安装日志服务器,看这一篇就够了

一、rsyslog部署1.1)rsyslog介绍Linux的日志记录了用户在系统上一切操作,看日志去分析系统的状态是运维人员必须掌握的基本功。rsyslog日志服务器的优势:1、日志统一,集中式管理...