PostgreSQL 提供了丰富的内置函数,用于执行各种操作,如数学计算、字符串处理、日期时间操作等。以下是一些常用的 PostgreSQL 内置函数及其说明:
1. 聚合函数
-
SUM(): 计算某列的总和。
sqlSELECT SUM(column_name) FROM table_name;
-
AVG(): 计算某列的平均值。
sqlSELECT AVG(column_name) FROM table_name;
-
COUNT(): 计算某列的行数。
sqlSELECT COUNT(column_name) FROM table_name;
-
MIN(): 返回某列的最小值。
sqlSELECT MIN(column_name) FROM table_name;
-
MAX(): 返回某列的最大值。
sqlSELECT MAX(column_name) FROM table_name;
2. 字符串函数
-
LENGTH(): 返回字符串的长度。
sqlSELECT LENGTH('Hello World');
-
SUBSTRING(): 提取字符串的子串。
sqlSELECT SUBSTRING('Hello World' FROM 1 FOR 5);
-
CONCAT(): 连接两个或多个字符串。
sqlSELECT CONCAT('Hello', ' ', 'World');
-
UPPER(): 将字符串转换为大写。
sqlSELECT UPPER('hello');
-
LOWER(): 将字符串转换为小写。
sqlSELECT LOWER('HELLO');
3. 数学函数
-
ABS(): 返回绝对值。
sqlSELECT ABS(-10);
-
ROUND(): 四舍五入到指定的小数位数。
sqlSELECT ROUND(123.4567, 2);
-
CEIL(): 返回大于或等于指定数的最小整数。
sqlSELECT CEIL(123.456);
-
FLOOR(): 返回小于或等于指定数的最大整数。
sqlSELECT FLOOR(123.456);
-
RANDOM(): 返回一个随机数。
sqlSELECT RANDOM();
4. 日期和时间函数
-
NOW(): 返回当前日期和时间。
sqlSELECT NOW();
-
CURRENT_DATE: 返回当前日期。
sqlSELECT CURRENT_DATE;
-
CURRENT_TIME: 返回当前时间。
sqlSELECT CURRENT_TIME;
-
AGE(): 计算两个日期之间的间隔。
sqlSELECT AGE('2023-01-01', '2022-01-01');
-
EXTRACT(): 从日期或时间中提取部分(如年、月、日等)。
sqlSELECT EXTRACT(YEAR FROM NOW());
5. 条件函数
-
COALESCE(): 返回参数列表中的第一个非空值。
sqlSELECT COALESCE(NULL, 'default');
-
NULLIF(): 如果两个参数相等,则返回 NULL,否则返回第一个参数。
sqlSELECT NULLIF(1, 1);
-
GREATEST(): 返回参数列表中的最大值。
sqlSELECT GREATEST(1, 2, 3);
-
LEAST(): 返回参数列表中的最小值。
sqlSELECT LEAST(1, 2, 3);
6. 类型转换函数
-
CAST(): 将一种数据类型转换为另一种。
sqlSELECT CAST('123' AS INTEGER);
-
TO_CHAR(): 将日期/时间或数字转换为字符串。
sqlSELECT TO_CHAR(NOW(), 'YYYY-MM-DD');
-
TO_DATE(): 将字符串转换为日期。
sqlSELECT TO_DATE('2023-01-01', 'YYYY-MM-DD');
7. 数组函数
-
ARRAY_LENGTH(): 返回数组的长度。
sqlSELECT ARRAY_LENGTH(ARRAY[1, 2, 3], 1);
-
ARRAY_AGG(): 将多行数据聚合为一个数组。
sqlSELECT ARRAY_AGG(column_name) FROM table_name;
8. 窗口函数
-
ROW_NUMBER(): 为结果集中的每一行分配一个唯一的行号。
sqlSELECT ROW_NUMBER() OVER (ORDER BY column_name) FROM table_name;
-
RANK(): 为结果集中的每一行分配一个排名,相同的值会有相同的排名。
sqlSELECT RANK() OVER (ORDER BY column_name) FROM table_name;
-
DENSE_RANK() : 类似于
RANK()
,但排名不会跳过重复的值。sqlSELECT DENSE_RANK() OVER (ORDER BY column_name) FROM table_name;
这些函数只是 PostgreSQL 提供的众多内置函数中的一部分。根据具体需求,你可以查阅 PostgreSQL 官方文档以获取更详细的函数列表和使用说明。