`
lkj107
  • 浏览: 108478 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE和DB2实现相同功能的做法(1)

阅读更多
1.如何取一表前n笔记录的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select * from user.bsempms where rownum<=n;
DB2 可以这样实现﹕
Select * from db2admin.bsempms fetch first n rows only;
另外也可以用 row_number() over() 去实现的;
2.如何取得当前日期的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select sysdate from dual;
DB2 可以这样实现﹕
Select current timestamp from sysibm.sysdummy1;
3.如何连接字段的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select emp_no||emp_nam from bsempms;
Select concat(emp_no,emp_nam) from bsempms;
DB2 可以这样实现﹕
Select emp_no||emp_nam from db2admin.bsempms;
select emp_no concat emp_nam from db2admin.bsempms;
4.应该是取当前时间的
Oracle 可以这样实现﹕
Select sysdate from dual;
DB2 可以这样实现﹕
Select current timestamp from sysibm.sysdummy1;
5.内连接INNER JOIN的Oracle和DB2的写法
Oracle可以这样实现﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
DB2 可以这样实现﹕
Select * from db2admin.bsempms inner join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
6.外连接的Oracle和DB2的写法(右外连接,左外连接,完全外连接,组合外连接)
Oracle可以这样实现﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
DB2 可以这样实现﹕
Select * from db2admin.bsempms right outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms left outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms full outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
7.如何执行脚本SQL文件的Oracle和DB2的写法
Oracle 可以这样实现﹕
SQL>@$PATH/filename.sql;
DB2 可以这样实现﹕
db2 -tvf $PATH/filename 文件中每行以 ; ?尾
1.如何查看数据库的版本的Oracle和DB2的写法
Oracle 可以这样实现﹕
SQL> connect system/manager124@test ;
已联机.
SQL> select * from v$version;
 
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
 
DB2 可以这样实现﹕
在命令窗口执行 db2level
D:\SQLLIB\BIN>db2level
DB210851 Instance "DB2" uses DB2 code release "SQL07020" with level identifier
"03010105" and informational tokens "DB2 v7.1.0.40","n010415" and "WR21254".
2.如何快速清空一个大表的Oracle和DB2的写法
Oracle 可以这样实现﹕
SQL>truncate table table_name;
DB2 可以这样实现﹕
alter table table_name active not logged initially with empty table;
3.如何查看表空间的使用状况的Oracle和DB2的写法
Oracle 可以这样实现﹕
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS
 
pct_free
FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks,
 
sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )
WHERE tablespace_name = fs_ts_name
DB2 可以这样实现﹕
list tablespace containers for 你的表空间号 show detail;
4.如何从一时间点取出日期的各部分的常用的Oracle和DB2的写法
Oracle 可以这样实现﹕
1>.取时间点的年份的写法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
2>.取时间点的月份的写法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
3>.取时间点的日的写法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
4>.取时间点的时的写法:
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
5>.取时间点的分的写法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
6>.取时间点的秒的写法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
7>.取时间点的毫秒的写法9I以上)
select SUBSTR(systimestamp,20,6) from dual;
8>.取时间点的日期的写法:
SELECT TRUNC(SYSDATE) FROM DUAL;
9>.取时间点的时间的写法:
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
10>.日期,时间形态变为字符形态
SELECT TO_CHAR(SYSDATE) FROM DUAL;
11>.将字符串转换成日期或时间形态:
SELECT TO_DATE('2003/08/01') FROM DUAL;
12>.返回参数的星期几的写法:
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
13>.返回参数一年中的第几天的写法:
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
14>.返回午夜和参数中指定的时间值之间的秒数的写法:
SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;
15>.返回参数中一年的第几周的写法:
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
 
DB2 可以这样实现﹕
1>.取时间点的年份的写法:
SELECT YEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
2>.取时间点的月份的写法:
SELECT MONTH(current timestamp) FROM SYSIBM.SYSDUMMY1;
3>.取时间点的日的写法:
SELECT DAY(current timestamp) FROM SYSIBM.SYSDUMMY1;
4>.取时间点的时的写法:
SELECT HOUR(current timestamp) FROM SYSIBM.SYSDUMMY1;
5>.取时间点的分的写法:
SELECT MINUTE(current timestamp) FROM SYSIBM.SYSDUMMY1;
6>.取时间点的秒的写法:
SELECT SECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
7>.取时间点的毫秒的写法:
SELECT MICROSECOND(current timestamp) FROM SYSIBM.SYSDUMMY1;
8>.取时间点的日期的写法:
SELECT DATE(current timestamp) FROM SYSIBM.SYSDUMMY1;
9>.取时间点的时间的写法:
SELECT TIME(current timestamp) FROM SYSIBM.SYSDUMMY1;
10>.日期,时间形态变为字符形态:
SELECT char(current date) FROM SYSIBM.SYSDUMMY1;
SELECT char(current time) FROM SYSIBM.SYSDUMMY1;
SELECT char(current date+12 hours) FROM SYSIBM.SYSDUMMY1;
11>.将字符串转换成日期或时间形态:
SELECT TIMESTAMP('2002-10-20-12.00.00.000000') FROM SYSIBM.SYSDUMMY1;
SELECT TIMESTAMP('2002-10-20 12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('2002-10-20') FROM SYSIBM.SYSDUMMY1;
SELECT DATE('10/20/2002') FROM SYSIBM.SYSDUMMY1;
SELECT TIME('12:00:00') FROM SYSIBM.SYSDUMMY1;
SELECT TIME ('12.00.00') FROM SYSIBM.SYSDUMMY1;
12>.返回参数的星期几的写法:
SELECT DAYNAME(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK(current timestamp) FROM SYSIBM.SYSDUMMY1;
SELECT DAYOFWEEK_ISO(current timestamp) FROM SYSIBM.SYSDUMMY1;
13>.返回参数一年中的第几天的写法:
SELECT DAYOFYEAR(current timestamp) FROM SYSIBM.SYSDUMMY1;
14>.返回午夜和参数中指定的时间值之间的秒数的写法:
SELECT MIDNIGHT_SECONDS(current timestamp) FORM SYSIBM.SYSDUMMY1;
15>.返回参数中一年的第几周的写法:
SELECT WEEK(current timestamp) FORM SYSIBM.SYSDUMMY1
 
分享到:
评论

相关推荐

    ORACLE转DB2对照全解

    **注意:** Oracle和DB2都支持外连接,语法相同。 #### 十二、Decode语句 **Oracle:** ```sql DECODE(col, 'value1', val1, 'value2', val2, def_val) ``` **DB2:** ```sql CASE WHEN col = 'value1' THEN val1 ...

    DB2与ORACLE常用语句对照

    - Oracle的`ALTER TABLE`用于修改表结构,DB2也提供相同功能。 - 两者都支持`DROP TABLE`来删除表,但需要注意的是,Oracle默认是不回收空间的,而DB2在删除表时会回收空间。 2. 数据操作语言(DML): - 插入数据...

    ORACLE与DB2的区别和转换

    DB2则通过`cast`函数实现相同功能,可以将一种数据类型转换为另一种数据类型。 ##### 8. 创建类似表 **Oracle**: `create table a as select * from b;` **DB2**: `create table a like b;` - **解析**: 在...

    Oracle和DB2间基本架构和管理的差异

    尽管Oracle和DB2在核心功能上有很多相似之处,但它们在一些关键领域存在显著差异,如存储过程的使用方式和日志生成机制。以下是两个系统在基本组件方面的对比: - **存储过程**:在Oracle中,存储过程使用PL/SQL...

    SQL_Server,Oracle,DB2数据库SQL语句比较

    在Oracle中,通过`SELECT * FROM xtable WHERE ROWNUM 实现相同功能。注意,ROWNUM是Oracle的一个伪列,用于标记每一行的序号。 DB2则使用`SELECT * FROM xtable FETCH FIRST N ROWS ONLY`来获取前N行数据。`FETCH ...

    DB2和ORACLE 应用开发差异比较

    - Oracle的重做日志文件(Redo Log Files)用于记录事务的改变,而DB2使用事务日志文件(Transaction Log Files)实现相同功能。 4. **编程语言支持** - Oracle支持PL/SQL,一种内嵌在SQL中的过程式语言。 - DB2...

    oracle转DB2 对照

    - 注意点: DB2中没有直接对应的函数,但可以使用 `CASE` 语句实现相同功能。 #### 13. Rownum - **Oracle** 支持 `ROWNUM` 来限制结果集中的行数。 - Oracle示例: ```sql SELECT * FROM (SELECT column, ROWNUM...

    Oracle迁移到DB2 SQL语句差异

    **DB2**: 使用`FETCH FIRST`关键字来实现同样的功能。 ```sql SELECT * FROM TableName FETCH FIRST N ROWS ONLY; ``` #### 获取系统当前日期 **Oracle**: 使用`SYSDATE`函数来获取当前日期。 ```sql SELECT ...

    ORACLE移植DB2注意事项

    Oracle中提供了`decode`函数用于条件判断,而在DB2中则使用`CASE WHEN THEN ELSE END`这样的结构来实现相同的功能。例如: ```sql -- Oracle SELECT decode(a.status, 1, 'Active', 0, 'Inactive') AS status_desc ...

    Oracle和DB2的转换[参照].pdf

    - DB2没有内置的`decode`函数,但可以通过`CASE`表达式实现相同功能,如: ```sql SELECT id, name, CASE WHEN integer(flag) = 0 THEN '假' WHEN integer(flag) = 1 THEN '真' ELSE '异常' END FROM ...

    oracle与db2.doc

    - DB2 只提供 `CASE` 表达式来实现类似功能,如 `SELECT id, name, CASE WHEN INTEGER(flag) = 0 THEN '假' WHEN INTEGER(flag) = 1 THEN '真' ELSE '异常' END FROM TEST;` 10. **视图创建**: - Oracle 可以...

    ORACLE到DB2应用移植方法探讨.pdf

    "ORACLE 到 DB2 应用移植方法探讨" 本文从应用移植的角度描述了 ORACLE 和 DB2 存在的一些差异,列举了几种移植方案,...ORACLE 到 DB2 的应用移植可以通过多种方法和工具来实现,而 MTK 是其中一种非常有用的工具。

    oracle&db2

    Oracle 和 DB2 都是业界知名的...总的来说,Oracle 和 DB2 在SQL语法上存在一定的差异,但都能实现相同的功能。开发人员在使用时需要根据具体环境选择合适的命令。了解这些差异对于跨平台的数据库管理非常有帮助。

    ORACLE DB2开发中的对比

    在IT行业中,数据库管理系统是数据存储和处理的...综上所述,ORACLE和DB2在SQL语法上有明显的区别,但都能有效地实现各种数据库操作。开发者在选择或迁移数据库时,需要充分理解这些差异,以便更高效地进行开发工作。

    DB2和 Oracle的并发控制(锁)比较

    ### DB2和 Oracle的并发控制(锁)比较 #### 一、引言 在现代数据库管理系统(DBMS)中,如DB2、Oracle等,事务处理是核心功能之一。事务不仅需要具备原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和...

    Oracle DBA如何管理DB2

    - 不同数据库系统支持的数据类型存在差异,例如Oracle和DB2的日期时间类型、字符串类型等可能有不同的实现和限制,DBA需要熟悉两者间的转换规则。 4. **数据字典/编目**: - Oracle的数据字典由一系列SYS模式下的...

    DB2和Oracle的区别.pdf

    Oracle支持`REPLACE`函数,但在DB2中需要使用其他方法来实现相同功能。在子查询别名的使用上,Oracle和DB2也有差异,Oracle可以直接使用子查询别名,而DB2在某些情况下可能需要使用`AS`关键字。 关于日期类型的处理...

    DB2兼容模式设置文档

    - **DUAL**:Oracle有一个内置的空表`DUAL`,在DB2中则需要手动创建一个名为`DUAL`的表来实现相同功能。 - **ROWNUM**:Oracle中的`ROWNUM`在DB2中无法直接使用,需要使用子查询结合行计数函数来实现类似功能。 -...

Global site tag (gtag.js) - Google Analytics