站長資訊網
        最全最豐富的資訊網站

        db2與oracle的sql語句有什么區別

        區別:1、db2用“create table a like b”創建類似表,oracle用“create table a as select * from b”;2、db2用varchar類型轉換,oracle用“to_char”函數轉換。

        db2與oracle的sql語句有什么區別

        本教程操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

        db2與oracle的sql語句有什么區別

        1.創建類似表語法

        Oracle :  	create table a as select * from b; DB2    :  	create table a like b; 		  	(8版本有效,9版本無效) 	create table new_a as select col1,col2... from a definition only

        2.快速清空大表語法

        Oracle :  	truncate table a; DB2    : 	alter table a active not logged initially with empty table;

        3.取前N條數據語法

        Oracle :  	select * from a where rownum <= N; DB2    : 	select * from a fetch first N rows only;

        4.取得系統時間語法

        Oracle : 	select sysdate from dual; DB2    : 	select current timestamp from sysibm.sysdummy1;

        5.空值轉換方式不同

        Oracle : 	select col1,col2,nvl(col3,'0') from tablename; (判斷col3字段是否為空,不為空就輸出原來的數值,為空就輸出0) DB2   : 	select col1,col2,value(col3,'0') from tablename; 	 	(mysql和Db2可以使用Coalesce(col3,'0')函數來實現上述功能)
        Coalesce()函數
        這個函數主要用來進行空值處理,其參數格式如下: COALESCE ( expression,value1,value2……,valuen)  COALESCE()函數的第一個參數expression為待檢測的表達式,而其后的參數個數不定。 COALESCE()函數將會返回包括expression在內的所有參數中的第一個非空表達式。 	如果expression不為空值則返回expression; 	否則判斷value1是否是空值,如果value1不為空值則返回value1; 	否則判斷value2是否是空值,如果value2不為空值則返回value2; 	……以此類推, 	如果所有的表達式都為空值,則返回NULL。

        6.類型轉換方式不同

        oracle : 	select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; DB2    : 	select varchar(current timestamp) from sysibm.sysdummy1;

        解析:

        Oracle數據類型改變函數:to_char()、to_date()、to_number()等; 	如果僅僅取年,月,日等,可以用 		to_char(sysdate, 'YYYY'), 		to_char('MM') , 		to_char('DD')取得。 	只取年月日TRUNC(SYSDATE)。 	取時分秒TO_CHAR(SYSDATE,'HH24:MI:SS')。  DB2數據類型改變函數:char()、varchar()、int()、date()、time()等; 	取得年,月,日等的寫法: 		YEAR(current timestamp), 		MONTH(current timestamp), 		DAY(current timestamp), 		HOUR(current timestamp), 		MINUTE(current timestamp), 		SECOND(current timestamp), 		MICROSECOND(current timestamp), 	只取年月日可以用 		DATE(current timestamp), 	取時分秒 		TIME(current timestamp)。 	Char()是定長字符串(1-255),varchar()為非定長字符串(1-32672)日期, 	時間形態變為字符形態:  		char(current date), 		char(current time) 	將字符串轉換成日期或時間形態: 		TIMESTAMP('2002-10-2012:00:00'), 		DATE('2002-10-20'), 		DATE('10/20/2002'), 		TIME('12:00:00')

        目前DB2 V8也支持to_char和to_date,V9版新增了to_number

        7.字符串轉換為日期方式不同(To_Number/cast)

        Oracle: 	select to_number('123') from dual; 	select cast('123' as integer) from dual; DB2   : 	select cast('123' as integer) from sysibm.sysdummy1; 	select cast(current time as char(8)) from sysibm.sysdummy1;

        8.子查詢

        Oracle: 	直接用子查詢  Db2:WITH語句 	WITH  a1 AS(SELECT max(id) AS aa1 FROM test )SELECT id ,aa1 FROM test ,a1

        9.遞歸查詢(分層查詢)

        Oracle遞歸查詢:CONNECT BY PRIOR ... START WITH ... DB2   遞歸查詢:DB2較難理解,要WITH一個虛擬表
        Oracle:
        //從child是son的數據向上查詢出所有的長輩select distinct test_parent from (        select t.test_parent from t_test t                connect by prior t.test_parent = t.test_child                start with t.test_child = 'son' )

        db2與oracle的sql語句有什么區別
        了解

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲日韩精品无码专区网址| 国产成人精品久久一区二区三区av| 精品国产三级a在线观看| 精品国产91久久久久久久 | 亚洲国产精品嫩草影院在线观看| 91精品视频在线| 国产午夜精品免费一区二区三区| 日韩蜜芽精品视频在线观看| 91人妻人人澡人人爽人人精品| 精品无码国产一区二区三区AV| 亚洲国产精品丝袜在线观看| 精品一久久香蕉国产线看播放| 九九热这里只有在线精品视 | 日韩精品一区二区三区视频| 久久青青草原国产精品免费| 国内精品久久久久伊人av| 中文字幕精品一区| 亚洲国产精品综合久久一线| 日本精品视频在线观看| 国产手机在线精品| 国产精品99爱免费视频| 亚洲精品人成在线观看| 国产在线精品一区二区不卡| 99香蕉国产精品偷在线观看| 国产亚洲精品无码成人| 国产亚洲精品精华液| 精品国产a∨无码一区二区三区| 亚洲AV成人精品网站在线播放 | 精品一区二区三区在线观看 | 99爱在线精品免费观看| 精品乱码一区二区三区四区| 色一乱一伦一图一区二区精品| 国产精品九九九久久九九| 99久久99久久久精品齐齐| 999国内精品永久免费视频| 国产成人精品视频一区二区不卡| 精品综合久久久久久888蜜芽| 精品国产第一国产综合精品| 91精品美女在线| 久久91精品国产91久久麻豆| 中文精品一卡2卡3卡4卡|