【PostgreSQL 17】7 常用函数与类型转换

常用数学函数

abs(x) 绝对值

SELECT
	abs(-10)
;

image

取整

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

image

乘方与开方

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"
;

image

弧度与角度

degrees 弧度转角度
radians 角度转弧度

SELECT
	degrees(1.57),
	radians(90.0)
;

常量pi

SELECT
	pi()
;

image

sign(x) 符号函数

SELECT
	sign(-10)
;

image

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'
;

image

字符与编码

ascii 返回第一个字符的ASCII码
chr(int) 返回编码对应的字符

SELECT
	ascii('x'),
	chr(120)
;

image

字符串长度

bit_length(string) 计算字符串包含的比特数
length(string)、char_length(string)、character_length(string) 计算字符串包含的字符数
octet_length(string) 计算字符串包含的字节数

SELECT
	bit_length('sql'),
	length('数据库'),
	octet_length('数据库')
;

image

大小写

initcap(string) 每个单词首字母大写

SELECT
	lower('TOM'),
	upper('tom'),
	initcap('hi Thomas')
;

image

时间

当前时间

SELECT
	current_date,
	current_time,
	current_timestamp
;

image

时间差

SELECT
	current_date - date '2025-06-30'
;

image

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

image

获取时间中的信息

SELECT
	extract('year' from current_date)
;

image

日期截取

获得当前时间所在月的第一天

SELECT
	date_trunc('month', current_timestamp)
;

image

类型转换

CAST 和 ::

SELECT
	CAST('2022-01-01' AS DATE),
	'100'::INTEGER
;

image

to_date

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

image

to_char

SELECT
	to_char(current_timestamp, 'HH24:MI:SS'),
	to_char(interval '5h 12m 30s', 'HH12:MI:SS'),
	to_char(-125.8, '999D99')
;
![image](https://img2024.cnblogs.com/blog/2900491/202508/2900491-20250821100250228-1344095416.png)

to_number 字符串转换为数字

L代表本地货币符号

SELECT
	to_number('¥125.8', 'L999D9')
;

image

隐式类型转换

SELECT
	1 + '2',
	'ABC'||123||current_date
;

image

参考资料

[1] 不剪发的Tony老师【PostgreSQL开发指南】18~21节

posted @ 2025-08-21 10:12  苦涩如影相随固  阅读(14)  评论(0)    收藏  举报