postgresql 中的COALESCE()函數(shù)使用小技巧
場景:
存在一個用戶白名單表,提供了此用戶的用戶名和地區(qū)信息,判斷此用戶是否在此白名單表中。
如:
姓名 白名單地區(qū)
張三 中國,美國
則可使用如下語句:
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
技巧點分析:
1、coalesce函數(shù)說明:返回其參數(shù)中第一個非空表達式,這里使用即 area_list
2、白名單地區(qū)為多個國家以逗號分隔,則使用like concat的方式,能查詢出某個國家是否被包含其中。
補充:PostgreSQL - null和''的區(qū)別與判斷以及COALESCE函數(shù)
null和''的區(qū)別與判斷
null是一種類型,''是空字符串,打個比方,''是你參加了考試且得了零分,而null則是你壓根就沒有參加考試。
如果要在sql中對兩者進行判斷,是有區(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ù)中的第一個非null的值,它要求參數(shù)中至少有一個是非null的,如果參數(shù)都是null會報錯。
select COALESCE(null,null); //報錯 select COALESCE(null,null,now()::varchar,''); //結(jié)果會得到當(dāng)前的時間 select COALESCE(null,null,'',now()::varchar); //結(jié)果會得到'' //可以和其他函數(shù)配合來實現(xiàn)一些復(fù)雜點的功能:查詢學(xué)生姓名,如果學(xué)生名字為null或''則顯示“姓名為空” select case when coalesce(name,'') = '' then '姓名為空' else name end from student;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
- MySQL語句之條件語句IFNULL和COALESCE的區(qū)別說明
- postgresql coalesce函數(shù)數(shù)據(jù)轉(zhuǎn)換方式
- PostgreSQL COALESCE使用方法代碼解析
- MySql COALESCE函數(shù)使用方法代碼案例
- mysql中null(IFNULL,COALESCE和NULLIF)相關(guān)知識點總結(jié)
- mysql中coalesce()的使用技巧小結(jié)
- mysql中替代null的IFNULL()與COALESCE()函數(shù)詳解
- SQL Server COALESCE函數(shù)詳解及實例
- 淺析SQL Server的分頁方式 ISNULL與COALESCE性能比較
- sql coalesce函數(shù)的具體使用
相關(guān)文章
PostgreSQL用戶、數(shù)據(jù)庫及表的管理、操作與授權(quán)方式
這篇文章主要介紹了PostgreSQL用戶、數(shù)據(jù)庫及表的管理、操作與授權(quán)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01查看postgresql數(shù)據(jù)庫用戶系統(tǒng)權(quán)限、對象權(quán)限的方法
這篇文章主要介紹了查看postgresql數(shù)據(jù)庫用戶系統(tǒng)權(quán)限、對象權(quán)限的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列代碼示例
數(shù)據(jù)庫中主鍵的生成一般是通過序列來生成,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-11-11PostgreSQL分區(qū)表(partitioning)應(yīng)用實例詳解
這篇文章主要為大家詳細介紹了PostgreSQL分區(qū)表(partitioning)應(yīng)用實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11postgresql踩坑系列之關(guān)于to_date()問題
這篇文章主要介紹了postgresql踩坑系列之關(guān)于to_date()問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03淺談PostgreSQL 11 新特性之默認(rèn)分區(qū)
這篇文章主要介紹了淺談PostgreSQL 11 新特性之默認(rèn)分區(qū),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12使用pg_basebackup對Postgre進行備份與恢復(fù)的實現(xiàn)
這篇文章主要介紹了使用pg_basebackup對Postgre進行備份與恢復(fù)的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01