
PostgreSQL常用函数
length(string)
返回回字符串的长度SELECT length('Hello, World!');
upper(string)
将字符串转换为大写SELECT upper('hello');
lower(string)
将字符串转换为小写SELECT lower('HELLO');
substring(string from start for length)
从字符串中提取子串SELECT substring('abcdef' from 2 for 3);
abs(numeric)
返回数字的绝对值SELECT abs(-10);
round(numeric, decimal_places)
将数字四舍五入到指定的小数位数SELECT round(3.14159, 2);
now()
返回当前的日期和时间SELECT now();
age(timestamp)
计算当前日期与给定时间戳之间的年龄SELECT age('2000-01-01');
count(expression)
统计符合条件的行数SELECT count(*) FROM users;
sum(expression)
返回一组值的总和SELECT sum(salary) FROM employees;
avg(expression)
计算一组值的平均值SELECT avg(score) FROM test_results;
array_agg(expression)
将值聚合为数组SELECT array_agg(name) FROM employees;
unnest(array)
将数组展开为一组行SELECT unnest(ARRAY[1, 2, 3]);
jsonb_build_object(key, value)
构建一个 JSON 对象SELECT jsonb_build_object('name', 'John', 'age', 30);
jsonb_array_elements(jsonb)
将 JSON 数组展开为一组行SELECT jsonb_array_elements('[1, 2, 3]');
row_number() over (partition by column order by column)
为每个分区的行分配唯一编号SELECT name, row_number() over (partition by department order by salary) FROM employees;
coalesce(value1, value2, ...)
返回列表中的第一个非空值SELECT coalesce(NULL, NULL, 'default');
nullif(value1, value2)
如果两个值相等,则返回 NULLSELECT nullif(1, 1);
pg_sleep(seconds)
暂停执行指定的秒数SELECT pg_sleep(5);
generate_series(start, stop)
生成一个从 start 到 stop 的整数序列SELECT generate_series(1, 10);
regexp_replace(string, pattern, replacement)
使用正则表达式替换字符串中的匹配部分SELECT regexp_replace('Hello 123', '\d+', '456');
jsonb_each(jsonb)
将 JSONB 对象展开为键值对SELECT * FROM jsonb_each('{"name": "John", "age": 30}');
pg_catalog.pg_table_is_visible(oid)
检查表是否可见SELECT pg_catalog.pg_table_is_visible('my_table'::regclass);
to_tsvector(text)
将文本转换为文本搜索向量SELECT to_tsvector('The quick brown fox');
to_tsquery(text)
将文本转换为时间戳查询格式SELECT to_tsquery('quick & brown');
set_config(setting, value, is_local)
设置运行时配置参数SELECT set_config('search_path', 'myschema', true);
pg_current_wal_lsn()
获取当前的 WAL 位置SELECT pg_current_wal_lsn();
pg_xact_commit_timestamp(xid)
获取事务提交的时间戳SELECT pg_xact_commit_timestamp(12345);
array_to_string(array, delimiter)
将数组转换为字符串SELECT array_to_string(ARRAY[1, 2, 3], ', ');
lpad(string, length, fill)
在字符串左侧填充指定字符到指定长度SELECT lpad('123', 5, '0');
rpad(string, length, fill)
在字符串右侧填充指定字符到指定长度SELECT rpad('123', 5, '0');
pg_column_size(expression)
返回表达式的存储大小(以字节为单位)SELECT pg_column_size('Hello World');
current_setting(setting)
获取当前会话的配置参数值SELECT current_setting('search_path');
date_trunc(unit, timestamp)
截断时间戳到指定的单位(如年、月、天等)SELECT date_trunc('month', now());