postgreSQL中的case用法说明

这篇文章主要介绍了postgreSQL中的case用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

工具:postgreSQL

Navicat Premium

又一次在看代码的时候,发现了不懂的东西!

这次就是case when then

SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。

  1.      CASE WHEN condition THEN result
         [WHEN ...]
         [ELSE result]
         END

     

解释:

condition是一个返回boolean的表达式。

如果为真,那么CASE表达式的结果就是符合条件的result。

如果结果为假,那么以相同方式 搜寻随后的WHEN子句。

如果没有WHEN condition为真,那么case表达式的结果就是在ELSE子句里的值。

如果省略了ELSE子句而且没有匹配的条件,结果为NULL。

select * from city;

 

我们的测试数据:

postgreSQL中的case用法说明

复制代码
 1 select SUM(city_id),case name
 2 when '北京' then '古都'
 3 when '西安' THEN '古都'
 4 when '上海' THEN '魔都'
 5 when 'NewYork' then '纽约'
 6 else '其他城市' END
 7 from city
 8 GROUP BY
 9 case name
10 when '北京' then '古都'
11 when '西安' THEN '古都'
12 when '上海' THEN '魔都'
13 when 'NewYork' then '纽约'
14 else '其他城市' END
复制代码

 

结果如下:

postgreSQL中的case用法说明

复制代码
select sum(city_id),CASE
when city_id < 3 then '小于3'
when city_id > 8 then '大于8'
else '大于3小于8' END
FROM city
group by
CASE
when city_id < 3 then '小于3'
when city_id > 8 then '大于8'
else '大于3小于8' END
order by
CASE
when city_id < 3 then '小于3'
when city_id > 8 then '大于8'
else '大于3小于8' END DESC
结果如下:
复制代码

 

postgreSQL中的case用法说明

根据上面两个例子可以明确的看出:

第一:为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块

第二:为了在ORDER BY块中使用CASE,查询语句需要在ORDER BY块中重复SELECT 块中的 CASE 块

第三:如果要比较的数据为数字,则在case 后不能写 字段名,如果要比较的数据为字符,则要在case后写上字段名

补充:Postgresql中(case、when)的用法

1 case when

 

  1. 复制代码
     1 (
     2      case
     3      when substr(starttime::varchar,0,5)='2020' then '2020年'
     4      when substr(starttime::varchar,0,5)='2019' then '2019年'
     5      when substr(starttime::varchar,0,5)='2018' then '2018年'
     6      when substr(starttime::varchar,0,5)='2017' then '2017年'
     7      when substr(starttime::varchar,0,5)='2016' then '2016年'
     8      when substr(starttime::varchar,0,5)='2015' then '2015年'
     9      when substr(starttime::varchar,0,5)='2014' then '2014年'
    10      when substr(starttime::varchar,0,5)='2013' then '2013年'
    11      when substr(starttime::varchar,0,5)='2012' then '2012年'
    12      when substr(starttime::varchar,0,5)='2011' then '2011年'
    13      when substr(starttime::varchar,0,5)='2010' then '2010年'
    14      when starttime is null then '其他年份' end
    15      ) AS year
    复制代码

     

2.mybatis中判断某个传参是否为空

<if test="geojsonString !=null and geojsonString !=''">
         WHERE
         st_intersects(geom,st_geomfromgeojson(#{geojsonString}))
</if>

 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

posted @   Thenext  阅读(1661)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示