postgreSQL中的case用法說明
工具:postgreSQL
Navicat Premium
又一次在看代碼的時候,發(fā)現(xiàn)了不懂的東西!
這次就是case when then
SQL CASE表達(dá)式是一種通用的條件表達(dá)式,類似于其它語言中的if/else語句。
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
解釋:
condition是一個返回boolean的表達(dá)式。
如果為真,那么CASE表達(dá)式的結(jié)果就是符合條件的result。
如果結(jié)果為假,那么以相同方式 搜尋隨后的WHEN子句。
如果沒有WHEN condition為真,那么case表達(dá)式的結(jié)果就是在ELSE子句里的值。
如果省略了ELSE子句而且沒有匹配的條件,結(jié)果為NULL。
select * from city
我們的測試數(shù)據(jù):

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
結(jié)果如下:

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
結(jié)果如下:

根據(jù)上面兩個例子可以明確的看出:
第一:為了在 GROUP BY 塊中使用 CASE,查詢語句需要在 GROUP BY 塊中重復(fù) SELECT 塊中的 CASE 塊
第二:為了在ORDER BY塊中使用CASE,查詢語句需要在ORDER BY塊中重復(fù)SELECT 塊中的 CASE 塊
第三:如果要比較的數(shù)據(jù)為數(shù)字,則在case 后不能寫 字段名,如果要比較的數(shù)據(jù)為字符,則要在case后寫上字段名
補(bǔ)充: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>
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作
這篇文章主要介紹了Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
navicat連接postgresql、人大金倉等數(shù)據(jù)庫報錯解決辦法
在使用Navicat操作數(shù)據(jù)庫時,遇到數(shù)據(jù)報錯是一個常見的問題,這類問題可能涉及多個方面,下面這篇文章主要給大家介紹了關(guān)于navicat連接postgresql、人大金倉等數(shù)據(jù)庫報錯的解決辦法,需要的朋友可以參考下2024-08-08
Postgresql排序與limit組合場景性能極限優(yōu)化詳解
這篇文章主要介紹了Postgresql排序與limit組合場景性能極限優(yōu)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
PostgreSQL 查找當(dāng)前數(shù)據(jù)庫的所有表操作
這篇文章主要介紹了PostgreSQL 查找當(dāng)前數(shù)據(jù)庫的所有表操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
PostgreSQL 重復(fù)數(shù)據(jù)處理的操作方法
這篇文章主要介紹了PostgreSQL 重復(fù)數(shù)據(jù)處理的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
postgresql 13.1 insert into select并行查詢的實(shí)現(xiàn)
這篇文章主要介紹了解決postgresql insert into select無法使用并行查詢的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

