PostgreSql(ppas)与Oracle不同

求两日期间的天数:
--ORACLE
SELECT TO_DATE('20170220' , 'YYYYMMDD') - TO_DATE( '20170121' , 'YYYYMMDD' ) + 1
  FROM DUAL;
--PPAS
SELECT DATE_PART('DAY','20170220'::TIMESTAMP - '20170121'::TIMESTAMP)+1
  FROM DUAL;


表字段添加默认值

--ORACLE
-- Add/modify columns
alter table HR_SOCIAL_INFO modify STATUS default 'D';
--PPAS
-- Add/modify columns
ALTER TABLE HR_SOCIAL_INFO ALTER STATUS SET DEFAULT 'D' ;



表字段类型修改
--ORACLE
-- Add/modify columns
alter table HR_SOCIAL_INFO modify STATUS VARCHAR2(10);
--PPAS
-- Add/modify columns
ALTER TABLE HR_SOCIAL_INFO ALTER COLUMN STATUS TYPE VARCHAR2(10) ;


  • INSERT语句
ppas
语句中表不能起别名;

oralce:没有限制

  • 函数
1.函数里面不能有commit;
2.对于左补函数LPAD(参数1,参数2,参数3),其中参数2必须是integer类型,NUMBER类型会报错
    常用:
select    LPAD(' ', cast(RECKON_ITEM_LEVEL as integer ) , ' ')   from 表名

  • UPDATE语句(多表)
  • 单表语句相同
多字段更新eg:

ppas

UPDATE 表A
  SET   表A.字段=表B.字段,...
FROM 表B
WHERE ...;


UPDATE   表A
      SET   (A.a,A.b)=(B.a,B.b)
FROM 表B   --表B可以是各表关联后生产的,但必须放到一个整表里,否则数据跟新范围会有问题
WHERE ...;

oracle更新
        
UPDATE 表A
             SET(字段1,字段2,...)
          = (SELECT B.a,B.b,... FROM 表B WHERE ...)
      WHERE ....




你可能感兴趣的:(postgreSql)