시소당
/* 비교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 부터 지원함.