pgsql常用函数
在 PostgreSQL 中,函数就像是“内置的小工具”,能帮你直接在 SQL 层把原始数据加工成最终需要的格式。 我们可以把常用的函数分为四大类:字符串处理、数值计算、日期时间以及聚合处理。 字
pgsql常用函数
发布时间:2026-04-15 (2天前)

在 PostgreSQL 中,函数就像是**“内置的小工具”**,能帮你直接在 SQL 层把原始数据加工成最终需要的格式。

我们可以把常用的函数分为四大类:字符串处理数值计算日期时间以及聚合处理

字符串处理函数(清洗数据的利器)

当你的文件路径、用户名格式不统一时,这些函数能帮大忙。

  • CONCAT(a, b)/||:拼接字符串。
  • UPPER()/LOWER():转换大小写。
  • SUBSTR(string, start, len):截取字符串。
  • REPLACE(string, from, to):替换内容。
  • COALESCE(value, default)【超级常用】 如果字段是 NULL,就给它一个默认值。

数值计算函数

  • ROUND(numeric, 2):四舍五入。
  • CEIL()/FLOOR():向上/向下取整。
  • ABS():取绝对值。

日期时间函数(时间管理的灵魂)

  • NOW():获取当前完整时间。
  • CURRENT_DATE:获取当前日期。
  • AGE(timestamp):计算时间差。
-- 看看这个文件上传了多久了
SET TIME ZONE 'Asia/Shanghai';
SELECT file_name, AGE(created_at) AS active_time FROM file_details;
  • EXTRACT(field FROM source):提取年、月、日、小时。
-- 统计每个小时的上传量
SELECT EXTRACT(HOUR FROM created_at) AS hour, COUNT(*) 
FROM file_details GROUP BY hour;
  • TO_CHAR():将时间格式化为字符串。
-- 变成类似 2026-04-14 14:30:00 的格式
SELECT TO_CHAR(created_at, 'YYYY-MM-DD HH24:MI:SS') FROM file_details;

流程控制与聚合函数

  • CASE WHEN:SQL 里的if-else
-- 给文件分等级
SELECT file_name,
       CASE
           WHEN file_size > 1024*1024*100 THEN '大文件'
           WHEN file_size > 1024*1024*10 THEN '中文件'
           ELSE '小文件'
           END AS file_level
FROM files;
  • STRING_AGG(field, delimiter)【PG特色】 把多行结果合并成一行字符串。
-- 把某个用户的所有标签拼成一个逗号分隔的字符串
SELECT uploader_ip, STRING_AGG(tags::text, ' | ') FROM file_details GROUP BY uploader_ip;

或者

SELECT 
    uploader_ip, 
    -- 先把所有数组合并成一个大数组,再转为字符串
    array_to_string(array_agg(unnest_tags), ', ')
FROM (
    SELECT uploader_ip, unnest(tags) AS unnest_tags FROM file_details
) t
GROUP BY uploader_ip;