PostgreSQL常用函数
PostgreSQL常用函数
PostgreSQL作为一款企业级开源数据库,其丰富的函数库为开发者提供了强大的数据处理工具。本文将全面深入地探讨PostgreSQL中的常用函数,帮助读者系统地掌握数据库函数的应用。
1. 字符串处理函数
1.1 基础字符串操作
length(string)
:计算字符串长度trim()
:去除字符串两端空格left(string, n)
:从左侧截取指定长度字符串right(string, n)
:从右侧截取指定长度字符串
SELECT length('PostgreSQL'); -- 输出 10
SELECT trim(' PostgreSQL '); -- 输出 'PostgreSQL'
SELECT left('PostgreSQL', 4); -- 输出 'Post'
SELECT right('PostgreSQL', 3); -- 输出 'SQL'
1.2 高级字符串处理
regexp_replace()
:使用正则表达式替换split_part()
:字符串分割repeat()
:重复字符串reverse()
:反转字符串
-- 使用正则表达式替换电话号码中的特殊字符
SELECT regexp_replace('123-456-7890', '[^0-9]', '', 'g');
-- 输出 '1234567890'
SELECT split_part('2024-01-15', '-', 2); -- 输出 '01'
SELECT repeat('PG ', 3); -- 输出 'PG PG PG '
SELECT reverse('PostgreSQL'); -- 输出 'LQSergsoP'
2. 数值处理函数
2.1 精确数学运算
power(x, y)
:计算x的y次方sqrt()
:平方根mod()
:取模运算width_bucket()
:数值分桶
SELECT power(2, 3); -- 输出 8
SELECT sqrt(16); -- 输出 4
SELECT mod(10, 3); -- 输出 1
-- 将0-100的数据分成5个桶
SELECT width_bucket(score, 0, 100, 5) AS grade_bucket
FROM exam_scores;
2.2 随机数和统计函数
random()
:生成0-1之间随机数setseed()
:设置随机数种子percentile_cont()
:连续百分位数
-- 设置随机数种子并生成随机数
SELECT setseed(0.5);
SELECT random();
-- 计算连续百分位数
SELECT
percentile_cont(0.5) WITHIN GROUP (ORDER BY salary) AS median_salary
FROM employees;
3. 日期和时间函数
3.1 日期计算与转换
extract()
:提取日期/时间的特定部分date_part()
:获取日期/时间组件to_char()
:日期格式化interval
:时间间隔计算
-- 提取年份和月份
SELECT
extract(year from current_date) AS current_year,
extract(month from current_date) AS current_month;
-- 格式化日期
SELECT to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS');
-- 计算两个日期间隔
SELECT current_date + interval '1 year 2 months';
3.2 时区处理
at time zone
:转换时区current_setting()
:获取当前时区设置
-- 转换时区
SELECT current_timestamp AT TIME ZONE 'UTC';
-- 获取当前时区
SELECT current_setting('timezone');
4. 高级聚合函数
4.1 窗口函数
row_number()
:行号rank()
:排名dense_rank()
:密集排名lag()
和lead()
:访问前后行数据
-- 按部门薪资排名
SELECT
name,
department,
salary,
rank() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank
FROM employees;
-- 获取前后行数据
SELECT
name,
sale_date,
amount,
lag(amount) OVER (ORDER BY sale_date) as previous_sale
FROM sales;
5. JSON和数组处理函数
5.1 JSON操作
jsonb_extract_path()
:提取JSON路径jsonb_set()
:修改JSON值json_array_length()
:数组长度
-- JSON数据处理
SELECT
jsonb_extract_path(user_info, 'address', 'city') AS city
FROM users;
-- 修改JSON值
SELECT
jsonb_set('{"name": "John"}'::jsonb, '{age}', '30'::jsonb);
5.2 数组函数
array_agg()
:聚合数组unnest()
:数组展开array_cat()
:数组合并
-- 将分组结果聚合为数组
SELECT
department,
array_agg(name) AS employee_names
FROM employees
GROUP BY department;
-- 数组合并
SELECT array_cat(ARRAY[1,2], ARRAY[3,4]); -- 输出 [1,2,3,4]
6. 安全与性能相关函数
6.1 加密与哈希
digest()
:生成哈希值encode()
:编码转换
-- MD5哈希
SELECT digest('password', 'md5');
-- Base64编码
SELECT encode('PostgreSQL', 'base64');
6.2 性能分析
pg_sleep()
:模拟延迟generate_series()
:生成序列
-- 生成测试数据
SELECT * FROM generate_series(1, 10);
-- 性能测试模拟
EXPLAIN ANALYZE
SELECT pg_sleep(1);
结语
PostgreSQL的函数生态系统极其丰富,本文仅展示了冰山一角。深入理解和灵活运用这些函数,不仅能提高开发效率,还能编写出更加简洁和高性能的数据库代码。
原文地址:https://blog.csdn.net/shy_1762538422/article/details/144448892
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!