PgSQL常用函数收集

最大最小函数

  1. 列最大最小 - 最大:max(column)、最小:min(column)
select max(grade), min(grade) from grademem_record

执行结果:

max min
500 -5
  1. 值最大最小 - 最小:least(val1, val2, ...)、最大:greatest(val1, val2, ...)
select least(10, 45, -88), greatest(10, 45, -88)

执行结果:

least greatest
-88 45

返回改表达式列表的第一个非空的值

coalesce (val1, val2, val3, …) value列表必须是相同类型。

select coalesce(null, 0, 3)

执行结果:

coalesce
0

条件表达式

case when - 类似于if/else

用法1:

case f
when va1
then 1
when val2
then 2
else 3
end
select 
	real_name as name ,
	(
		case sex
		when 0
		then '男'
		when 1
		then '女'
		else '保密'
		end
	) as sex 
from member_info

用法2:

case when where1
then 1
when where2
then 2
else 3
end
select 
	real_name as name ,
	(
		case when sex = 0
		then '男'
		when sex = 1
		then '女'
		else '保密'
		end
	) as sex 
from member_info

也可以在函数中使用:

select least(
	0, 
	(
		case ${year} -- 可以动态生成
		when 2021
		then 1
		when 2022
		then 2
		else 3
		end
	) 
)

select 
	sum(case when sex = 0 then 1 else 0 end) as sum1, 
	sum(case when sex = 0 then 0 else 1 end) as sum2
from member_info

coalesce

coalesce(value[,...]): 入参个数不限,返回参数中第一个非NULL值。

select coalesce(null,null,1,2,3) -> 1

select coalesce(null,null,'one','two') -> 'one'

nullif

nullif(arg1,arg2): 如果两个参数值相等则返回NULL,否则返回arg1.

select nullif(1,1); -> NULL

select nullif(1,2); -> 1

数据生成函数

generate_series

generate_series(start, stop, [step]): 生成填充数据

用法示例:

select generate_series(1, 10)
select generate_series(1, 10, 2)
select generate_series(10, 1, -5)
select generate_series(now(), now() + '7 days', '1 day')
select generate_series(to_date('20130403','yyyymmdd'), to_date('20130404','yyyymmdd'), '3 hours');

generate_subscripts

generate_subscripts(a1 array, [a2 array], dim int, [reverse boolean]) 生成数组下标值, dim为数组的维度,reverse: true反, false正

用法示例:

select generate_subscripts(array['a','b','c','d'], 1)
select generate_subscripts(array['a','b','c','d'], 1, true)
select generate_subscripts(array[array['a','b'], array['c','d'], array['e','f']], 1)
select generate_subscripts( array[array['a','b'], array['c','d'], array['e','f']], 2)