pgsql 一些常用操作

本文介绍了PostgreSQL中生成随机数的方法,包括整数和小数,并展示了如何进行多表关联更新。此外,还讨论了字符串操作,如截取和拼接,以及数组函数的使用,如去重查询。最后,提供了一个去重查询的例子,利用窗口函数ROW_NUMBER()进行数据去重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、随机数

-- 1-100 整数
select "floor"(random() * 100)
-- 1-100 小数,保留4位小数
select round((random() * 100) :: numeric, 4)
-- 100-500 整数
select floor( random() * (500-100) +100)
-- 100-500 小数,保留4位小数
select round((random() * (500-100) + 100) :: numeric, 4)

二、多表关联update

使用from关联表
更新表t_table ,set 不能使用别名 t1.name ,直接用name

update t_table t1 set name = t2.name
from t_table2 t2 
where t1.id = t2.id

三、字符串

-- 截取字符串前n位
select "left"('adaada', 4)
-- 字符串拼接
select 'hello' || ' ' || 'world'
-- 字符串以:分隔,取最后一段字符串
select regexp_replace('hehe:haha:111:22', '.*:', '')

四、数组函数

函数返回
regexp_split_to_array(‘1,2’, ‘,’)在这里插入图片描述
{1, 2, 3}
regexp_split_to_table(‘1,2,3,4’, ‘,’)在这里插入图片描述
string_to_array(‘1,2,3,4’, ‘,’)在这里插入图片描述
unnest(ARRAY[‘a’,‘b’,‘c’])12

假设c1的值以逗号分隔(eg:1,5,3),查询c1值包含 1,2,3,4 的值

SELECT ID,
	 c1,
	 c2,
	create_time 
FROM
	t_table 
WHERE
	regexp_split_to_array( c1, ',' ) && ARRAY [ string_to_array( '1,2,3,4', ',' ) ] 

在这里插入图片描述

五、去重

SELECT
	* 
FROM
	t_table 
WHERE
	ID IN (
	SELECT ID 
	FROM
		(
		SELECT ROW_NUMBER
			( ) OVER ( PARTITION BY column1, column2, column3, column4 ORDER BY ID ) AS RowNumber,* 
		FROM
			t_table 
		WHERE
			1 = 1 
		) t1 
	WHERE
	RowNumber > 1 
	)

PARTITION BY 需要去重的字段
ORDER BY 主键
RowNumber > 1 的数据为重复数据

手册

1、PostgreSQL 12.2 手册

2、PostGIS 手册

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值