<bdo id="vljxk"><rt id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt><rt id="vljxk"></rt><noframes id="vljxk"><rt id="vljxk"><delect id="vljxk"></delect></rt><noframes id="vljxk"><rt id="vljxk"></rt><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt>

當前位置:首頁 >  站長 >  數據庫 >  正文

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

 2021-05-22 16:48  來源: 腳本之家   我來投稿 撤稿糾錯

  阿里云優惠券 先領券再下單

存在一個用戶白名單表,提供了此用戶的用戶名和地區信息,判斷此用戶是否在此白名單表中。

如:

姓名 白名單地區

張三 中國,美國

則可使用如下語句:

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;

文章來源:腳本之家

來源地址:https://www.jb51.net/article/204892.htm

申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!

相關文章

熱門排行

信息推薦