PostgreSQL 是一个功能强大的开源关系型数据库管理系统,提供了丰富多样的函数,以下为你分类介绍各类常见函数的详细说明、用法及示例:
字符串函数
1. CONCAT()
- 说明:用于连接多个字符串。
- 用法:
CONCAT(string1, string2 [, ...])
- 示例:
收起
sql
SELECT CONCAT('Hello', ' ', 'World');
-- 输出: Hello World
2. SUBSTRING()
- 说明:从字符串中提取子字符串。
- 用法:
SUBSTRING(string FROM start [FOR length])
- 示例:
收起
sql
SELECT SUBSTRING('Hello World' FROM 7 FOR 5);
-- 输出: World
3. UPPER()
和 LOWER()
- 说明:
UPPER()
将字符串转换为大写,LOWER()
将字符串转换为小写。 - 用法:
UPPER(string)
LOWER(string)
- 示例:
收起
sql
SELECT UPPER('hello');
-- 输出: HELLO
SELECT LOWER('WORLD');
-- 输出: world
4. TRIM()
- 说明:去除字符串两端的空格或指定字符。
- 用法:
TRIM([leading | trailing | both] [characters] FROM string)
- 示例:
收起
sql
SELECT TRIM(' Hello ');
-- 输出: Hello
SELECT TRIM(both 'x' FROM 'xxxHelloxxx');
-- 输出: Hello
数值函数
1. ABS()
- 说明:返回一个数的绝对值。
- 用法:
ABS(number)
- 示例:
收起
sql
SELECT ABS(-10);
-- 输出: 10
2. ROUND()
- 说明:对数值进行四舍五入。
- 用法:
ROUND(number [, decimal_places])
- 示例:
收起
sql
SELECT ROUND(3.14159, 2);
-- 输出: 3.14
3. CEILING()
和 FLOOR()
- 说明:
CEILING()
返回大于或等于给定数值的最小整数,FLOOR()
返回小于或等于给定数值的最大整数。 - 用法:
CEILING(number)
FLOOR(number)
- 示例:
收起
sql
SELECT CEILING(3.1);
-- 输出: 4
SELECT FLOOR(3.9);
-- 输出: 3
日期和时间函数
1. CURRENT_DATE
、CURRENT_TIME
和 CURRENT_TIMESTAMP
- 说明:分别返回当前日期、当前时间和当前日期时间。
- 用法:直接使用这些关键字。
- 示例:
收起
sql
SELECT CURRENT_DATE;
-- 输出当前日期,例如: 2025-02-20
SELECT CURRENT_TIME;
-- 输出当前时间,例如: 12:34:56
SELECT CURRENT_TIMESTAMP;
-- 输出当前日期时间,例如: 2025-02-20 12:34:56
2. EXTRACT()
- 说明:从日期或时间值中提取特定部分,如年、月、日等。
- 用法:
EXTRACT(field FROM source)
- 示例:
收起
sql
SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP);
-- 输出当前年份,例如: 2025
3. DATE_TRUNC()
- 说明:将日期或时间值截断到指定的精度。
- 用法:
DATE_TRUNC('field', source)
- 示例:
收起
sql
SELECT DATE_TRUNC('month', CURRENT_TIMESTAMP);
-- 输出当前日期所在月的第一天的日期时间,例如: 2025-02-01 00:00:00
聚合函数
1. SUM()
- 说明:计算指定列的总和。
- 用法:
SUM(column)
- 示例:假设有一个
sales
表,包含amount
列。
收起
sql
SELECT SUM(amount) FROM sales;
2. AVG()
- 说明:计算指定列的平均值。
- 用法:
AVG(column)
- 示例:
收起
sql
SELECT AVG(amount) FROM sales;
3. COUNT()
- 说明:返回指定列中的行数或非空值的数量。
- 用法:
COUNT(*)
:返回表中的总行数。COUNT(column)
:返回指定列中非空值的数量。
- 示例:
收起
sql
SELECT COUNT(*) FROM sales;
-- 返回 sales 表的总行数
SELECT COUNT(amount) FROM sales;
-- 返回 amount 列中非空值的数量
4. MAX()
和 MIN()
- 说明:
MAX()
返回指定列中的最大值,MIN()
返回指定列中的最小值。 - 用法:
MAX(column)
MIN(column)
- 示例:
收起
sql
SELECT MAX(amount) FROM sales;
-- 返回 amount 列的最大值
SELECT MIN(amount) FROM sales;
-- 返回 amount 列的最小值
条件函数
1. CASE
- 说明:根据条件执行不同的操作。
- 用法:
收起
sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
- 示例:假设有一个
grades
表,包含score
列。
收起
sql
SELECT
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM grades;
窗口函数
1. ROW_NUMBER()
- 说明:为结果集中的每一行分配一个唯一的行号。
- 用法:
ROW_NUMBER() OVER (ORDER BY column)
- 示例:假设有一个
employees
表,包含employee_id
和salary
列。
收起
sql
SELECT
employee_id,
salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;
以上只是 PostgreSQL 中部分常见函数的介绍,PostgreSQL 还有许多其他类型的函数,如正则表达式函数、JSON 函数等,你可以参考 PostgreSQL 官方文档获取更详细的信息。分享
套图传送门THE END