一、随机数
-- 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’]) | ![]() |
假设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 的数据为重复数据