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数据库系统中,函数是进行数据操作和计算的重要工具。下面将详细对比这两者中的一些常用数学和比较函数。 1. **绝对值**: SQLServer使用`ABS()`函数,如`SELECT ABS(-1)`;Oracle同样使用`ABS...
主流数据库包括Oracle、MySQL、SQL Server、PostgreSQL等,每种数据库都有其特定的优势和适用场景,Oracle在企业级应用中表现出色。 3. **Oracle认证** Oracle Certified Professional (OCP) 是Oracle提供的专业...
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资料
6. **安全性和兼容性**:ora2pg在迁移过程中充分考虑了安全性,同时尽可能保持与Oracle数据库的兼容性,使得迁移后的PostgreSQL数据库能顺畅地服务于原Oracle应用程序。 在使用ora2pg进行迁移时,用户需要具备一定...
在北美,人们对于 PostgreSQL 的热情不断升温。随着 PostgreSQL 的发展, PostgreSQL 8.x 已经从技术上超越 MySQL 5.x ,而市场的超越相信只是时间问题...在此整理成文,希望能对大家使用 PostgreSQL 有一些启发。 1)
9. **常见问题与解决方法**:整理了用户可能遇到的问题及其解决方案,帮助快速定位和解决问题。 10. **法律声明**:强调了文档的使用权限、保密义务、版权信息以及对内容准确性和完整性的免责声明。 在使用此运维...
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //Sql Server7.0/2000 数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //DB2 数据库 Class.froName(...
7. **适配不同数据库**: JMeter支持多种数据库,除了MySQL和SQL Server,还可以连接Oracle、PostgreSQL、DB2等,只需引入相应的JDBC驱动jar包即可。 总之,JMeter结合适当的JDBC驱动,为数据库性能测试提供了一个...
自己平日整理收集的,常见数据库教程[共9本] 有兴趣的看看吧! 1、MS SQL Server循序渐进[chm] 2、MS SQL Server精华[chm] 3、MS SQL_Server菜鸟入门[chm] 4、MS SQL Server参考手册[chm] 5、MYSQL中文参考...
JDBC (Java Database Connectivity) 是Java编程语言中用于与各种数据库进行交互的一种标准接口。它允许Java应用程序通过Java API来访问和操作关系型数据库。在实际应用中,我们需要选择合适的JDBC驱动并构造正确的...
3. **数据转换**:虽然文件使用Oracle语法,但其他数据库系统如MySQL、SQL Server或PostgreSQL等可能需要不同的语法。如果你使用其他数据库,需要将这些SQL语句转换为对应数据库系统的语法。这通常涉及到列定义、...
1. **数据库连接**:支持多种数据库类型(如MySQL、Oracle、SQL Server、PostgreSQL等),通过配置连接参数(如数据库地址、端口、用户名、密码)与目标数据库建立连接。 2. **表结构提取**:读取数据库中的表信息...
标签中列举了几个知名的数据库系统:MySQL、SQLServer、DB2、Oracle、PostgreSQL。这些数据库系统各自需要不同的驱动程序和连接方式。 以下是根据文档部分内容整理的详细知识点: 1. Microsoft SQL Server JDBC ...
本文主要介绍如何使用Java通过JDBC(Java Database Connectivity)在JSP(Java Server Pages)中连接各种类型的数据库,包括Sql Server 7.0/2000、Oracle 8/8i/9i、DB2、MySQL、Sybase、Informix和PostgreSQL。...
本文将详细介绍如何使用不同的编程语言,如Java(通过JSP)来连接各种类型的数据库,包括Oracle、SQL Server、DB2、Informix、Sybase、MySQL和PostgreSQL。这些连接代码对于开发人员来说是非常关键的,因为它们允许...
【DBCHM-master】是一个数据库文档生成工具,它支持多种主流的关系型数据库系统,包括Sql Server、MySQL、Oracle、PostgreSQL以及DB2和SQLite。这个工具的主要目标是帮助数据库管理员和开发人员快速、准确地生成...
在IT行业中,SQL对于数据库管理和开发至关重要,无论是MSSQL(Microsoft SQL Server)还是其他数据库系统如MySQL、Oracle、PostgreSQL等,SQL的基本语法和原理都是相通的。 首先,让我们来看看SQL的基础知识。SQL...
MySQL、Oracle或PostgreSQL等关系型数据库可能被用作存储数据的平台,涉及到的数据表可能包括商品表、订单表、用户表等。 8. **安全性** 电子商务系统的安全性不容忽视,包括防止SQL注入、XSS攻击、CSRF攻击等。...
#### 一、Oracle数据库架构与实现原理 ##### 1. Oracle架构概述 Oracle Server 包含两个主要部分:数据库(Database)和实例(Instance)。这两个组成部分相互独立,各自拥有不同的职责。 - **数据库(Database)**:由...