postgresql 中的COALESCE()函数使用小技巧

 

存在一个用户白名单表,提供了此用户的用户名和地区信息,判断此用户是否在此白名单表中。

如:

姓名 白名单地区

张三 中国,美国

则可使用如下语句:

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函数说明:返回其参数中第一个非空表达式,这里使用即 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;

文章

①本站所有CMS源码、杰奇CMS模板、PTCMS源码模板、YGBOOK源码模板、帝国CMS源码模板等仅用于学习和交流,勿用于商业。
②本站资源有安装及使用文档,安装使用请自行探索,如您对购买的程序或是模板无法胜任安装工作,请点击付费安装。
③本站资源来源网络或者用户投稿,切勿私自传播于网络,否则将追究法律责任。且仅供学习交流之用,如有侵权请联系删除。
④如果资源失效或下载链接错误请联系站长。
悟空资源网 » postgresql 中的COALESCE()函数使用小技巧

发表评论