ORACLE 与 PostgreSQL差别
|
NO
|
问题点
|
Oracle
|
PostgreSQL
|
1
|
DUAL
|
SELECT 1+1 FROM DUAL
|
SELECT
1+1
或者
CREATE VIEW dual AS
SELECT 'X'::VARCHAR(1) AS DUMMY
再 SELECT 1+1 FROM DUAL
|
2
|
NEXTVAL
|
SELECT A_TABLE_SEQUENCE.NEXTVAL
FROM
DUAL
|
SELECT NEXTVAL('A_TABLE_SEQUENCE')
FROM
DUAL
|
3
|
ROWNUM
|
①SELECT *
FROM
AGE_TYPE
WHERE ROWNUM<=5
|
①SELECT *
FROM AGE_TYPE
LIMIT 5 OFFSET 0
|
②SELECT *
FROM AGE_TYPE
WHERE CODE IS NOT NULL
AND ROWNUM<=5
ORDER BY CODE DESC
|
②SELECT
*
FROM
AGE_TYPE
WHERE CODE IS NOT NULL
ORDER BY CODE DESC
LIMIT 5 OFFSET 0
|
4
|
(+)
|
①SELECT *
FROM A_TABLE A , B_TABLE B
WHERE A.ID(+)=B.ID
|
①SELECT *
FROM A_TABLE A
RIGHT OUTER JOIN
B_TABLE B
ON A.ID=B.ID
|
②SELECT *
FROM A_TABLE A , B_TABLE B
WHERE A.ID(+)=B.ID
AND A.COL1='COL1_VALUE'
|
②SELECT *
FROM A_TABLE A
RIGHT OUTER JOIN B_TABLE B
ON A.ID=B.ID AND A.COL1='COL1_VALUE'
|
③SELECT *
FROM A_TABLE A, B_TABLE B,C_TABLE C,D_TABLE D
WHERE
A.ID=B.ID(+) AND
A.ID=C.ID(+) AND
A.COL1=D.COL1
|
③SELECT *
FROM (A_TABLE A
LEFT OUTER JOIN B_TABLE B
ON A.ID=B.ID)
LEFT OUTER JOIN C_TABLE C
ON A.ID=C.ID,D_TABLE D
WHERE A.COL1=D.COL1
|
④!!!
SELECT *
FROM A_TABLE A
WHERE A.COL1(+)=0 AND
A.COL2(+) ='A_VALUE2'
|
④!!!
SELECT *
FROM A_TABLE A
WHERE A.COL1=0 AND
A.COL2='A_VALUE2'
WHERE (A.COL1=0 OR A.COL1 IS NULL) AND
(A.COL2='A_VALUE2' OR A.COL2 IS NULL)
|
5
|
AS
|
SELECT A.COL1
A_COL1,
A.COL2
A_COL2
FROM A_TABLE A
|
SELECT A.COL1 AS A_COL1,
A.COL2 AS A_COL2
FROM A_TABLE A
|
6
|
NVL
|
SELECT NVL(SUM(VALUE11),0) FS_VALUE1,
NVL(SUM(VALUE21),0) FS_VALUE2
FROM
FIELD_SUM
|
SELECT COALESCE(SUM(VALUE11),0) AS FS_VALUE1,
COALESCE(SUM(VALUE21),0) AS FS_VALUE2
FROM
FIELD_SUM
|
7
|
TO_
NUMBER
|
SELECT COL1
FROM A_TABLE
ORDER BY TO_NUMBER(COL1)
|
SELECT COL1
FROM A_TABLE
ORDER BY TO_NUMBER(COL1,999999)
[注:'999999' ---- 6位数
为
COL1字段的
长
度]
|
8
|
DECODE
|
SELECT DECODE(ENDFLAG,'1','A','B') ENDFLAG
FROM
TEST
|
SELECT
(CASE ENDFLAG
WHEN '1' THEN 'A'
ELSE '
B
' END) AS ENDFLAG
FROM TEST
|
9
|
时间
问题
|
UPDATE A_TABLE
SET ENTREDATE=SYSDATE
|
UPDATE A_TABLE
SET ENTREDATE=TO_TIMESTAMP(CURRENT_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS')
或者
UPDATE A_TABLE
SET ENTREDATE=CURRENT_TIMESTAMP
|
SELECT TO_DATE('20010203','YYYY-MM-DD') AS DAY
FROM DUAL
|
SELECT TO_DATE('20010203','YYYYMMDD') AS DAY
FROM DUAL
SELECT TO_DATE('20010203','YYYY-MM-DD') AS DAY
FROM DUAL
|
SELECT TO_DATE(SYSDATE,'YYYY-MM-DD') AS DAY
FROM DUAL
|
SELECT TO_DATE(CURRENT_DATE,'YYYY-MM-DD') AS DAY
FROM DUAL
|
SELECT TO_DATE(SYSDATE,'YYYY/MM/DD') AS DAY
FROM DUAL
|
SELECT TO_DATE(CURRENT_DATE,'YYYY/MM/DD') AS DAY
FROM DUAL
|
10
|
||
|
SELECT NULL||'-'||NULL AS VALUES1
FROM DUAL
|
SELECT COALESCE(NULL,'')||'-'||COALESCE(NULL,'') AS VALUES1
FROM DUAL
SELECT NULL||'-' ||NULL AS VALUES1
FROM DUAL
|
11
|
aggregate
|
SELECT ROUND(AVG(SUM(BASICCNT1))) BASICCNT
FROM
ACCESS_INFO_SUM1_V
WHERE YEARCODE BETWEEN '200305' AND '200505'
GROUP BY SCCODE
|
SELECT
ROUND(AVG(AIV.BASICCNT)) AS BASICCNT
FROM
(SELECT SUM(BASICCNT1)
AS BASICCNT
FROM
ACCESS_INFO_SUM1_V
WHERE YEARCODE BETWEEN '200305' AND '200505'
GROUP BY sccode
) AIV
|
12
|
「"」
|
①SELECT LENGTH('') AS VALUE1 FROM DUAL
[Result]VALUE1=NULL
|
①SELECT LENGTH('') AS VALUE1 FROM DUAL
[Result]VALUE1=0
|
②SELECT TO_DATE('','YYYYMMDD') AS VALUE2
FROM DUAL
[Result]VALUE2=NULL
|
②SELECT TO_DATE('','YYYYMMDD') AS VALUE2
FROM DUAL
[Result]VALUE2=0001-01-01 BC
|
③SELECT TO_NUMBER('',1) AS VALUE3 FROM DUAL
[Result]VALUE3=NULL
|
③SELECT TO_NUMBER('',1) AS VALUE3 FROM DUAL
[Result]不能
执
行
|
④INSERT INTO TEST(VALUE4)VALUES('')
[Result]VALUE4=NULL (注:VALUE3字段
为
数
值
类
型)
|
④INSERT INTO TEST(VALUE4)VALUES('')
[Result]VALUE4=0
(注:VALUE4字段
为
数
值
类
型)
|
⑤INSERT INTO TEST(VALUE5)VALUES('')
[Result]VALUE5=NULL (注:VALUE5字段
为
字符
类
型)
|
⑤INSERT INTO TEST(VALUE5)VALUES('')
[Result]VALUE5=''
(注:VALUE5字段
为
字符
类
型,
结果为长度为零的字符串
)
|
⑥INSERT INTO TEST(VALUE6)VALUES(TO_DATE('','YYYYMMDD'))
[Result]VALUE6=NULL (注:VALUE6字段
为时间类
型)
|
⑥INSERT INTO TEST(VALUE6)VALUES(TO_DATE('','YYYYMMDD'))
[Result]VALUE6=0001-01-01 BC
(注:VALUE7字段
为时间类
型)
|
13
|
CEIL
|
SELECT CEIL(SYSDATE - TO_DATE('20051027 14:56:10','YYYYMMDD HH24:MI:SS')) AS DAYS
FROM DUAL
|
SELECT
EXTRACT(DAY
FROM (TO_TIMESTAMP(CURRENT_TIMESTAMP,'YYYY-MM-DD-HH24-MI-SS')
-TO_TIMESTAMP('2005-10-27 14:56:10','YYYY-MM-DD-HH24-MI-SS') ))+1 AS
DAYS
FROM DUAL
|
14
|
NULLIF
|
无NULLIF函数
|
SELECT NULLIF(VALUE1,VALUE2) AS COL1 FROM DUAL
[注]当VALUE1=VALUE2
时,COL1=NULL
|
15
|
CONCAT
|
CONCAT(CHAR,CHAR)
|
创建函数来解决
CREATE FUNCTION CONCAT(CHAR,CHAR)
RETURNS CHAR AS
'SELECT $1 || $2' LANGUAGE 'sql';
|
16
|
ADD_
MONTHS
|
add_months(date, int)
|
创
建函数来解决
CREATE FUNCTION add_months(date, int)
RETURNS date AS
'SELECT ($1 + ( $2::text || ''months'')::interval)::date;'
LANGUAGE 'sql'
|
17
|
LAST
_DAY
|
LAST_DAY(DATE)
|
创
建函数来解决
CREATE FUNCTION LAST_DAY(DATE)
RETURNS DATE AS
'SELECT date(substr(text($1 +
interval(''1 month'')),1,7)||''-01'')-1'
LANGUAGE 'sql';
|
18
|
MONTHS
_BETWEEN
|
MONTH_BETWEEN(DATA,DATA)
|
创
建函数来解决
CREATE FUNCTION MONTH_BETWEEN(DATA,DATA)
RETURNS NUMERIC AS
'SELECT to_number((date($1)-
date($2)),''999999999'')/31'
LANGUAGE 'sql';
|
19
|
GRE~
ATEST
|
GREATEST (LEAST)
|
创
建函数来解决
CREATE OR REPLACE FUNCTION
GREATEST(TEXT[]) RETURNS TEXT AS '
DECLARE
ARRY ALIAS FOR $1;
GREATEST TEXT;
BEGIN
GREATEST := ARRY[1];
FOR I IN 1 .. ARRAY_UPPER(ARRY,1) LOOP
IF ARRY[I] > GREATEST THEN
GREATEST := ARRY[I];
END IF;
END LOOP;
RETURN GREATEST;
END;
' LANGUAGE 'PLPGSQL';
SELECT GREATEST( ARRAY['HARRY','HARRIOT','HAROLD'])
AS "Greatest";
|
20
|
BITAND
|
BITAND(int,int)
|
SELECT 値 & 値;
|
21
|
子条件
|
|
在FROM子条件中字段
须有列名,
处理方法用AS +别名
|
22
|
MINUS
|
MINUS
|
以EXCEPT来替代
|
23
|
BIN_
TO_
NUM
|
SELECT BIN_TO_NUM(1,0,1,0) AS VALUE1 FROM DUAL
|
SELECT CAST(B'1010' AS INTEGER) AS VALUE1
|
相关推荐
SQLServer和Oracle的常用函数对比 共计45点 1.绝对值 2.取整(大) 3.取整(小) 4.取整(截取) 5.四舍五入 6.e为底的幂 7.取e为底的对数 8.取10为底对数 9.取平方 10.取平方根 11.求任意数为底的幂 12.取...
97 Oracle 迁移至 PostgreSQL 在华为 ARM 上的解决方案 98 Oracle 数据库隐含参数设置 99 Oracle 隐含参数 100 Oracle 诊断事件及深入解析10053事件 101 OS deploying-odg-with-oda-1615029 102 OS IBM AIX ...
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 ...本文集整理了最新国内外21位专家对于PostgreSQL的技术分享PPT资料
在北美,人们对于 PostgreSQL 的热情不断升温。随着 PostgreSQL 的发展, PostgreSQL 8.x 已经从技术上超越 MySQL 5.x ,而市场的超越相信只是时间问题...在此整理成文,希望能对大家使用 PostgreSQL 有一些启发。 1)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //Sql Server7.0/2000 数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //DB2 数据库 Class.froName(...
自己平日整理收集的,常见数据库教程[共9本] 有兴趣的看看吧! 1、MS SQL Server循序渐进[chm] 2、MS SQL Server精华[chm] 3、MS SQL_Server菜鸟入门[chm] 4、MS SQL Server参考手册[chm] 5、MYSQL中文参考...
数据库 (DB):经过计算机整理的、存储在一个或多个文件中的、按照一定的结构模型组织起来的、可共享的数据集合。 数据库管理系统(DBMS) :位于用户和操作系统之间用户管理数据库的应用软件 数据库系统(DBS) :...
直接或者间接获取数据库的交易,将数据发布到分布式数据流管理集群平台(ZCBUS目前已与KAFKA集成),其分布式数据管理功能可以对数据进行数据流整理和流加工;根据客户实际需求,重新数据打包和订阅发布,也即把数据...
vikas 收集整理,包括:jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、...
对于 ORM 和 Sql 调用,它都拥有清晰和易用的接口,目前支持 SqlServer、SQLite、MySql、Access、Firebird、PostgreSQL、Oracle 等数据库。对于 WEB 开发,它既支持 ASP.NET 2.0 的 DataSource 方式,也支持 Ruby On...
The samples of the release package all TESTED on Sql Server 2005 Express, MySql 5.0, SQLite 3, Access 2003, Firebird 2.1.0, PostgreSQL 8.3.3 and Oracle 10g express. Features: Linq support (need .net...
Oracle、SqlServer、MySql、PostgreSql、Sqlite、MongoDB WEB前端 AngularJS、JQuery、ReactJS、EasyUI、Bootstrap、Highcharts、Umediter、Meteor、Ember Python Tornado、Flask、Twisted、Django、Pyra
本软件是绿色版,解压缩以后就可以直接使用 SQL Endia... 支持SQL Server、Oracle、ODBC、MySQL、PostgreSQL等数据库连接。 不足之处是此软件为日文版,希望有识之士能汉化一下 使用说明请看文件内的ReadMe
vikas 收集整理,包括:jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、...
通过PostgreSQL进行分析的快速列式存储 具有完整ACID语义的超快速嵌入式键/值存储。 免费和开源,高性能,分布式内存对象缓存系统 网站 mongo -Mongo数据库http://www.mongodb.org/ facebook / mysql-5.6 -Oracle...
PHP4 中文手册 <br>英文版权及引用文章归原著者所有 <br>中文整理及CHM制作:星空浪子 zhongcfido@126.com http://netleader.126.com<br>您可以对本手册进行复制,但必须保证本手册的全整性,手册的错误之处请...
MySQL的手册有3000多页,PostgreSQL的手册有2000多页,Oracle的手册更是比它们相加还要厚。 但是,自己写一个简单的数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,把原理讲清楚了。下面是...
Dashboard Buidler可以帮助您使用拖放工具来填充和整理复杂的数据,并生成代码,只需单击几下即可与整个业务社区共享您的仪表板。 什么是业务仪表板工具及其工作原理 业务仪表板构建器是功能强大的拖放工具,不需要...