设为首页 收藏本站
查看: 1152|回复: 0

[经验分享] ORACLE和DB2实现相同功能的做法(1)

[复制链接]

尚未签到

发表于 2016-7-31 17:49:36 | 显示全部楼层 |阅读模式
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
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251544-1-1.html 上篇帖子: Oracle多个数据库启动和关闭脚本 下篇帖子: Oracle数据库密码文件的使用和维护
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表