工具:postgreSQL
Navicat Premium
又一次在看代码的时候,发现了不懂的东西!
这次就是case when then
SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
解释:
condition是一个返回boolean的表达式。
如果为真,那么CASE表达式的结果就是符合条件的result。
如果结果为假,那么以相同方式 搜寻随后的WHEN子句。
如果没有WHEN condition为真,那么case表达式的结果就是在ELSE子句里的值。
如果省略了ELSE子句而且没有匹配的条件,结果为NULL。
select * from city
我们的测试数据:
select SUM(city_id),case name when '北京' then '古都' when '西安' THEN '古都' when '上海' THEN '魔都' when 'NewYork' then '纽约' else '其他城市' END from city GROUP BY case name when '北京' then '古都' when '西安' THEN '古都' when '上海' THEN '魔都' when 'NewYork' then '纽约' else '其他城市' END
结果如下:
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
结果如下:
根据上面两个例子可以明确的看出:
第一:为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块
第二:为了在ORDER BY块中使用CASE,查询语句需要在ORDER BY块中重复SELECT 块中的 CASE 块
第三:如果要比较的数据为数字,则在case 后不能写 字段名,如果要比较的数据为字符,则要在case后写上字段名
补充:Postgresql中(case、when)的用法
1.case when
( case when substr(starttime::varchar,0,5)='2020' then '2020年' when substr(starttime::varchar,0,5)='2019' then '2019年' when substr(starttime::varchar,0,5)='2018' then '2018年' when substr(starttime::varchar,0,5)='2017' then '2017年' when substr(starttime::varchar,0,5)='2016' then '2016年' when substr(starttime::varchar,0,5)='2015' then '2015年' when substr(starttime::varchar,0,5)='2014' then '2014年' when substr(starttime::varchar,0,5)='2013' then '2013年' when substr(starttime::varchar,0,5)='2012' then '2012年' when substr(starttime::varchar,0,5)='2011' then '2011年' when substr(starttime::varchar,0,5)='2010' then '2010年' when starttime is null then '其他年份' end ) AS year
2.mybatis中判断某个传参是否为空
<if test="geojsonString !=null and geojsonString !=''"> WHERE st_intersects(geom,st_geomfromgeojson(#{geojsonString})) </if>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
postgreSQL,case
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]