SSISO Community

시소당

오라클:DB2 주요기능 비교

/* 비교1 */
TYPE                 ORACLE                              DB2
------------------------------------------------------------------------------------
DUMMY           DUAL                         SYSIBM.SYSDUMMY
EX)
        ORACLE > SELECT SYSDATE FROM DUAL;
        DB2       > SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1
------------------------------------------------------------------------------------
NULL               NVL(XX,'333')             COALESCE(XX,'333')
ROWNUM         ROWNUM > 1             ..WHERE XX > '333' FETCH FIRST 1 ROW ONLY 
날짜타입           SYSDATE                   CURRENT DATE           : 2004-06-11
                                                       CURRENT TIMESTAMP : 2004-06-11 :10:12 23:20
-------------------------------------------------------------------------------------
숫자변환           TO_NUMBER              정수형 : INTEGER(XX), DOUBLE(XX),FLOAT(XX)
문자변환           TO_CHAR                   문자형 : CHAR(XX)
날짜변환           TO_DATE                    1.TO_DATE 있지만 쓸려면 절라 삽질해야함.. 포기
                                                        2.오라클의 TO_DATE(XX,'YYYY-MM-DD')
                                                           지원안함..
                                                        3.DATE함수
                                                           DATE('2004')          ->에러 지원안함
                                                           DATE('200406')       ->에러 지원안함
                                                           DATE('20040611')    ->에러 지원안함
                                                           DATE('2004'||'-'||'06'||'-'||'11') ->날짜 리턴
                                                           DATE('2004-06'||'-'||'11')           ->날짜 리턴
                                                           DATE('2004-06-11')                     ->날짜 리턴
날짜계산           ADDMONTH                 1.DB2에는 오라클의 ADDMONTH함수 비슷꾸리무한
                                                           게 없음.. ㅠ.ㅠ
                                                         2.CURRENT DATE + 1 years   ->년도 계산
                                                            CURRNET DATE + 1 months ->월계산
                                                            CURRENT DATE + 1 days    ->일자계산
                                                            CURRENT TIMESTAMP + 윗것과 같음
                                                            CURRENT TIME            + 윗것과 같음
                                                         3.두날짜사이에 계산일수 구하기
                                                            DATE('2004-02-03') - DATE('2004-06-11')
조건절              DECODE                      DB2 조건절은 CASE .. WHEN .. THEN .. END 만 지원함..

----------------------------------------------------------------------------

/* 비교2 */

ORACLE)

SELECT

    NAME,

    DECODE(LENGTH(RTRIM(SUBSTR(SSN_NO, 1, 13))), 10, '사업자번호',

                                                 13, '주민번호', '주민/사업자번호 오류!!!')

FROM CUST;

 

IBM DB2)

1)

SELECT

    NAME,

    CASE LENGTH(RTRIM(SUBSTR(SSN_NO, 1, 13))) WHEN 10 THEN 사업자번호

                                              WHEN 13 THEN 주민번호

                                              ELSE 주민/사업자번호 오류!!! END

FROM CUST;

 

2)

SELECT

    NAME,

    CASE WHEN LENGTH(RTRIM(SUBSTR(SSN_NO, 1, 13))) = 10 THEN 사업자번호

         WHEN LENGTH(RTRIM(SUBSTR(SSN_NO, 1, 13))) = 13 THEN 주민번호

    ELSE 주민/사업자번호 오류!!! END

FROM CUST;

 

* ORACLE 에서도 CASE WHEN THEN WHEN THEN ELSE END 와 같은 형식은 8i 부터 지원되나 Pro*C Compiler 9i 부터 지원함.

 

2201 view

4.0 stars