postgres 删除重复数据、生成随机数、跨库查询、一段间隔后的时间、替换字段中的部分字符

postgres删除重复数据

sql语句:

delete from table where ctid not in (select min(ctid) from table group by tableColumn)

其中:

  • table是数据表表名, tableColumn是判断数据是否重复的关键列,根据情况替换;
  • ctid是postgres中的关键字,不可替换。
  • 可以将min(ctid)换成max(ctid),如果需要保存的是最新插入的数据,使用max

 

针对 Postgres生成数据方法

<1>生成序列====》           SELECT * FROM generate_series(1,5);

<2>生成date====》    SELECT date(generate_series(now(), now() + '1 week', '1 day'));

<3>生成integer 随机数=》 SELECT (random()*(2*10^9))::integer;

<4>生成numeric 随机数=》select (random()*100)::numeric(4,2);

<5>生成字符串==》    select substr('abcdefghijklmnopqrstuvwxyz',1,(random()*26)::integer);

<6>生成重复串==>    select repeat('1',(random()*40)::integer);

 

跨库查询

查看连接:

select dblink_get_connections()

断开所有连接:

select dblink_disconnect()

断开指定名称的连接:

select dblink_disconnect('test')

如之前建立过名为‘test’的连接:

select dblink_connect('test','host=localhost dbname=cbe_sta user=postgres password=lifc126820')

SELECT * FROM dblink('myconn', 'select proname, prosrc from pg_proc')
  AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';

获取一段间隔后的时间

select now() + interval '10 min/year/month/day/hour/sec/ (1 year 1 month 1 day 1 hour 1 min 1 sec)'

替换字段中的部分字符

把列中凡是有2011的全部修改成2014,如 lieming 里的201101131431改成201401131431,写法:

update tab set lieming = replace(lieming,'2011','2014');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值