postgresql 中的COALESCE()函數(shù)使用小技巧
場(chǎng)景:
存在一個(gè)用戶白名單表,提供了此用戶的用戶名和地區(qū)信息,判斷此用戶是否在此白名單表中。
如:
姓名 白名單地區(qū)
張三 中國(guó),美國(guó)
則可使用如下語(yǔ)句:
SELECT
ID,
user,
area_list
FROM
t_white_user
WHERE
user = #{ user,
jdbcType = VARCHAR }
AND (
COALESCE (area_list, '') LIKE CONCAT (
'%' ,#{ country,
jdbcType = VARCHAR }, '%'
)
OR area_list IS NULL
)
LIMIT 1
技巧點(diǎn)分析:
1、coalesce函數(shù)說(shuō)明:返回其參數(shù)中第一個(gè)非空表達(dá)式,這里使用即 area_list
2、白名單地區(qū)為多個(gè)國(guó)家以逗號(hào)分隔,則使用like concat的方式,能查詢出某個(gè)國(guó)家是否被包含其中。
補(bǔ)充:PostgreSQL - null和''的區(qū)別與判斷以及COALESCE函數(shù)
null和''的區(qū)別與判斷
null是一種類型,''是空字符串,打個(gè)比方,''是你參加了考試且得了零分,而null則是你壓根就沒(méi)有參加考試。
如果要在sql中對(duì)兩者進(jìn)行判斷,是有區(qū)別的:
//null只能和is或is not搭配,不能使用=、!=或者<> select * from student where name is null; select * from student where name is not null; //''的判斷可以使用=、!=或者<> select * from student where name = ''; select * from student where name != ''; select * from student where name <> '';
使用COALESCE函數(shù)
COALESCE函數(shù)是返回參數(shù)中的第一個(gè)非null的值,它要求參數(shù)中至少有一個(gè)是非null的,如果參數(shù)都是null會(huì)報(bào)錯(cuò)。
select COALESCE(null,null); //報(bào)錯(cuò) select COALESCE(null,null,now()::varchar,''); //結(jié)果會(huì)得到當(dāng)前的時(shí)間 select COALESCE(null,null,'',now()::varchar); //結(jié)果會(huì)得到'' //可以和其他函數(shù)配合來(lái)實(shí)現(xiàn)一些復(fù)雜點(diǎn)的功能:查詢學(xué)生姓名,如果學(xué)生名字為null或''則顯示“姓名為空” select case when coalesce(name,'') = '' then '姓名為空' else name end from student;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- MySQL語(yǔ)句之條件語(yǔ)句IFNULL和COALESCE的區(qū)別說(shuō)明
- postgresql coalesce函數(shù)數(shù)據(jù)轉(zhuǎn)換方式
- PostgreSQL COALESCE使用方法代碼解析
- MySql COALESCE函數(shù)使用方法代碼案例
- mysql中null(IFNULL,COALESCE和NULLIF)相關(guān)知識(shí)點(diǎn)總結(jié)
- mysql中coalesce()的使用技巧小結(jié)
- mysql中替代null的IFNULL()與COALESCE()函數(shù)詳解
- SQL Server COALESCE函數(shù)詳解及實(shí)例
- 淺析SQL Server的分頁(yè)方式 ISNULL與COALESCE性能比較
- sql coalesce函數(shù)的具體使用
相關(guān)文章
PostgreSQL實(shí)現(xiàn)定期備份的方法
PostgreSQL定期備份功能可以自動(dòng)備份數(shù)據(jù)庫(kù),避免了手動(dòng)備份過(guò)程中可能發(fā)生的錯(cuò)誤,也極大地減輕了管理員的工作壓力,所以本文將給大家介紹一下PostgreSQL實(shí)現(xiàn)定期備份的方法,需要的朋友可以參考下2024-03-03
PostgreSQL向數(shù)據(jù)庫(kù)表中添加行數(shù)據(jù)的操作
這篇文章主要介紹了PostgreSQL向數(shù)據(jù)庫(kù)表中添加行數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
postgresql數(shù)據(jù)合并,多條數(shù)據(jù)合并成1條的操作
這篇文章主要介紹了postgresql數(shù)據(jù)合并,多條數(shù)據(jù)合并成1條的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
postgresql查詢自動(dòng)將大寫的名稱轉(zhuǎn)換為小寫的案例
這篇文章主要介紹了postgresql查詢自動(dòng)將大寫的名稱轉(zhuǎn)換為小寫的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL 如何查找需要收集的vacuum 表信息
這篇文章主要介紹了PostgreSQL 如何查找需要收集的vacuum 表信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
Windows?環(huán)境搭建?PostgreSQL?邏輯復(fù)制高可用架構(gòu)數(shù)據(jù)庫(kù)服務(wù)
本文主要介紹Windows下搭建PostgreSQL的主從邏輯復(fù)制,關(guān)于PostgreSQl的相關(guān)運(yùn)維文章,網(wǎng)絡(luò)上大多都是?Linux?環(huán)境下的操作,鮮有在?Windows?環(huán)境下配置的教程,所以本文采用?Windows?環(huán)境作為演示系統(tǒng)來(lái)進(jìn)行?PostgreSQL?高可用數(shù)據(jù)庫(kù)服務(wù)的搭建,感興趣的朋友一起看看吧2023-05-05
CentOS 7下安裝PostgreSQL 9.6的教程分享
PostgreSQL在我心目中的地位要遠(yuǎn)遠(yuǎn)高于MySQL,雖然流行對(duì)比MySQL低很對(duì),但是功能性一致走在MySQL的前面。下面這篇文章主要介紹了CentOS 7下安裝PostgreSQL數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考借鑒,一起來(lái)看看吧。2017-02-02
postgresql 實(shí)現(xiàn)獲取所有表名,字段名,字段類型,注釋
這篇文章主要介紹了postgresql 實(shí)現(xiàn)獲取所有表名,字段名,字段類型,注釋操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01

