postgresql和oracle语法区别

查正在运行的SQL

SELECT

    procpid,

    START,

    now() - START AS lap,

    current_query

FROM

    (

        SELECT

            backendid,

            pg_stat_get_backend_pid (S.backendid) AS procpid,

            pg_stat_get_backend_activity_start (S.backendid) AS START,

            pg_stat_get_backend_activity (S.backendid) AS current_query

        FROM

            (

                SELECT

                    pg_stat_get_backend_idset () AS backendid

            ) AS S

    ) AS S

WHERE

    current_query <> '<IDLE>'

ORDER BY

    lap DESC;

   

   --杀进程

   SELECT pg_cancel_backend('33746')

杀进程

   SELECT pg_cancel_backend('33746')

跟ORACLE语法区别之处

Update和delete语法区别

Pg 和MySQL Update和delete的时候表名不能加别名

插入数字类型不一样

ORACLE 对number类型的数据可以用’’ 字符串标记插入,但是PG不行,必须要进行正确的数据类型

SEQ使用不同

ORACEL的SEQ 是 SELECT SEQ,NEXT_VAL FROM DUAL

PG 使用方法select nextval('SEQ_NAME')

时间格式化不一样

翻页查询不一样

oracle用rownum控制,pg用limit控制

差集不一样

oracle用minus,pg用EXCEPT

时间函数不一样

获取通用时间SELECT CURRENT_TIMESTAMP,oracle一般用sysdate,PG 还有current_date(),current_time();

条件判断不一样

PG没有decode判断,需要用case when then 代替

判断字符串为空

oracle

  Select NVL(foo,'Value is Null')

  FROM dual;

PostgreSQL

  Select coalesce(foo,'Value is Null')

查询字符串INSTR不一样

oracle

  Select INSTR('Great','eat') FROM dual;

PostgreSQL

  Select POSITION('eat' IN 'great');

执行存过不一样

Pg存过执行都是CALL XXX();

即便在存储内部调用存过都是call xxx();必须要写call

Oracle 可以用begin xxx();end;调用

也可以用{  call xxx(); }

在存过内部调用存过不需要写call ,直接写函数名称

跟ORACLE语法相同之处

都有SEQUENCE

字符串连接都用||

存过的赋值都是 := 判断都是=

都可以指定动态查询,比如存过中使用动态SQL

--PostgreSql

execute 'select count(1) from test' into v_count;

--Oracle

execute immediate 'select count(1) from test' into v_count;

open cur for execute 'select  * from xxx';

      loop

  end loop;

close cur;

总结:

postgresql的语法感觉是mysql和oracle的结合体

通用时间 current_timestamp

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值