【PostgreSQL 17】7 常用函数与类型转换
常用数学函数
abs(x) 绝对值
SELECT
abs(-10)
;

取整
- ceil(x) ≥x的最小整数
- floor(x) ≤x的最大整数
- round(x) 四舍五入为整数
- trunc(x) 向零取整
SELECT
ceil(-0.1) AS "ceil",
floor(-0.1) AS "floor",
round(12.1) AS "round",
trunc(0.1) AS "trunc"
;

乘方与开方
SELECT
power(2, 3) AS "power(2,3)",
sqrt(4) AS "sqrt(4)",
cbrt(27) AS "cbrt(27)"
;
指数和对数
exp(x) 计算以e为底的指数
ln(x) 计算以e为底的对数
log(x) 计算以10为底的对数
log(b, x) 计算以b为底的对数
SELECT
exp(1.0) AS "exp(1.0)",
ln(2.7) AS "ln(2.7)",
log(100) AS "log(100)",
log(2, 16) AS "log(2, 16)"
;
整数商和余数
SELECT
div(9, 4) AS "div",
mod(9,4) AS "mod"
;

弧度与角度
degrees 弧度转角度
radians 角度转弧度
SELECT
degrees(1.57),
radians(90.0)
;
常量pi
SELECT
pi()
;

sign(x) 符号函数
SELECT
sign(-10)
;

random()随机数
返回一个0~1的数
SELECT
random()
;
使用种子使其生成固定随机数
SELECT setseed(0);
SELECT random();
使用random进行随机抽样
SELECT
first_name
FROM
employees
ORDER BY
random()
LIMIT
10
;
常用字符函数
字符串拼接
SELECT
concat('s', 'q', 'l'),
concat_ws('-','s', 'q', 'l'),
's'||'q'||'l'
;

字符与编码
ascii 返回第一个字符的ASCII码
chr(int) 返回编码对应的字符
SELECT
ascii('x'),
chr(120)
;

字符串长度
bit_length(string) 计算字符串包含的比特数
length(string)、char_length(string)、character_length(string) 计算字符串包含的字符数
octet_length(string) 计算字符串包含的字节数
SELECT
bit_length('sql'),
length('数据库'),
octet_length('数据库')
;

大小写
initcap(string) 每个单词首字母大写
SELECT
lower('TOM'),
upper('tom'),
initcap('hi Thomas')
;

时间
当前时间
SELECT
current_date,
current_time,
current_timestamp
;

时间差
SELECT
current_date - date '2025-06-30'
;

SELECT
age(current_date, date '2022-01-01')
;

获取时间中的信息
SELECT
extract('year' from current_date)
;

日期截取
获得当前时间所在月的第一天
SELECT
date_trunc('month', current_timestamp)
;

类型转换
CAST 和 ::
SELECT
CAST('2022-01-01' AS DATE),
'100'::INTEGER
;

to_date
SELECT
to_date('2022年01月01日', 'YYYY年MM月DD日')
;

to_char
SELECT
to_char(current_timestamp, 'HH24:MI:SS'),
to_char(interval '5h 12m 30s', 'HH12:MI:SS'),
to_char(-125.8, '999D99')
;

to_number 字符串转换为数字
L代表本地货币符号
SELECT
to_number('¥125.8', 'L999D9')
;

隐式类型转换
SELECT
1 + '2',
'ABC'||123||current_date
;

浙公网安备 33010602011771号