postgresql中的COALESCE()函数使⽤⼩技巧场景:
存在⼀个⽤户⽩名单表,提供了此⽤户的⽤户名和地区信息,判断此⽤户是否在此⽩名单表中。
如:
姓名⽩名单地区
张三中国,美国
则可使⽤如下语句:
SELECT
ID,
user,
postgre trunc函数的使用方法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函数说明:返回其参数中第⼀个⾮空表达式,这⾥使⽤即 area_list
2、⽩名单地区为多个国家以逗号分隔,则使⽤like concat的⽅式,能查询出某个国家是否被包含其中。
补充:PostgreSQL - null和''的区别与判断以及COALESCE函数
null和''的区别与判断
null是⼀种类型,''是空字符串,打个⽐⽅,''是你参加了考试且得了零分,⽽null则是你压根就没有参加考试。
如果要在sql中对两者进⾏判断,是有区别的:
//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函数
COALESCE函数是返回参数中的第⼀个⾮null的值,它要求参数中⾄少有⼀个是⾮null的,如果参数都是null会报错。select COALESCE(null,null); //报错
select COALESCE(null,null,now()::varchar,''); //结果会得到当前的时间
select COALESCE(null,null,'',now()::varchar); //结果会得到''
//可以和其他函数配合来实现⼀些复杂点的功能:查询学⽣姓名,如果学⽣名字为null或''则显⽰“姓名为空”
select case when coalesce(name,'') = '' then '姓名为空' else name end from student;
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。