pgsql常用函数
字符处理类
COALESCE(column_name, 指定值)
将空值(NULL)转为指定值,column_name为字段名,逗号后可以指定值。如COALESCE(id, 0)
SPLIT_PART(字符串, 分隔符, 位置索引)
返回字符串中按分隔符分隔的指定序号字符

如:SELECT split_part('12-13-14', '-', 2) 返回13
SELECT split_part('12-13-14', '-', 3) 返回14
CONCAT(字符串,字符串)
将多个字符串拼接到一起
TRIM()
去除字符串两端的空格,如SELECT trim(' hello ! ') 输出’hello !’
时间处理
TO_TIMESTAMP()
时间戳转日期时间,毫秒级的时间戳需要先÷1000
SELECT TO_TIMESTAMP(1635388200) 输出2021-10-28 10:30:00+08
SELECT TO_TIMESTAMP(1635388200000/1000) 输出2021-10-28 10:30:00+08
TO_CHAR()
格式化日期时间为指定字符串
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');
-- 输出:2025-10-28 14:42:34
EXTRACT()
提取日期时间的组成部分
SELECT EXTRACT(YEAR FROM NOW()) AS year,
EXTRACT(MONTH FROM NOW()) AS month,
EXTRACT(DAY FROM NOW()) AS day;

使用+/-进行日期加减
INTERVAL后可以加minutes,SECOND,也可以进行组合,如INTERVAL '1 year 2 months 3 days'
Json数据处理
jsonb_array_elements
展开JSON数组为多行
jsonb_set(target jsonb, path text[], new_value jsonb, [create_missing boolean])
更新现有键的值:通过指定路径,替换对应位置的值。
添加新键:如果路径不存在且create_missing为true,则创建新键。
如:UPDATE mo_trail_order_detail SET attr_value = jsonb_set ( attr_value, '{order_no}', case when attr_value ->> 'order_no' is not null then to_jsonb(attr_value ->> 'order_no' || ',A001' ) ELSE '"A001"' END, TRUE ) WHERE ID = 1221
jsonb_build_array(any)
构造列表对象
jsonb_build_object(any)
构造object对象
如:jsonb_build_object('customer_code',customer_code)
