[본문스크랩] [1]오라클에서 DB2로 바꿀 때_FUNCTION
제가 오라클을 DB2로 바꿀 때 고생했던 함수들 입니다. DB2 가 어찌나 예민하던지 조금만 자기 형식대로 안맞으면 에러 막내버리고 흑흑..
그냥 주로 썻던 함수들 정리해 봅니다.
1. NVL() => COALESCE()
2. DECODE() => CASE .. WHEN .. THEN .. END
: 이함수는 converting 했을 때 열받았던 함수 이죠.. 다른 함수들은 앞에만 바꿔주면 되는데, 이함수는 일일이 when 절 then 절을 잘 구분해서 하나하나 써줘야 하니 ㅠㅠ 암튼 db2는 이런거는 좀 번거럽습니다.
3. ROWNUM => rowid
: DB2 에서는 ROWNUM 이 없고 대체되는 것이 FETCH FIRST 1 ROW ONLY 라고 나오는데 아무리 써봐도 이거때메 에러 나더라구요~ 그래서 찾은게
FROM 절에 (SELECT ROWNUM() OVER() AS rowid, column1, column2, ... FROM 원래 테이블명 ) as temp 이렇게 써야 하더라구요~
예시) select rowid,b from (select rownumber() over() as rowid, b from test) temp;
4. SYSDATE와 DUAL => CURRENT TIME 과 SYSIBM.SYSDUMMY1
: 오라클에서의 시간알아볼때나 테이블이 없는경우로 테스트로 쓸 때 DUAL 을 쓰는데요~ DB2에서는 SYSIBM.SYSDUMMY1 으로 쓰죠~
* SELECT SYSDATE FROM DUAL; => SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1; 으로 바뀔 수 있죠~
5. TO_DATE()
: 그냥 DATE로 바꾸는 함수는 DB2에서 제공하는 함수로는 DATE() 라는 함수가 있는데요, 오라클처럼 쓰고 싶으면 UDF를 만들어서 사용하면 비슷하게 사용할 수 있습니다.(참조 : UDF첨부파일) 그런데 DATE는 TIMESTAMP를 많이 사용하는데요, TIMESTAMP_ISO(DATE | TIME | TIMESTAMP | VARCHAR) 로 TIMESTAMP로 바꿀 수 있습니다.
6. TO_CHAR()
: CHAR() 라는 함수로 CHAR로 바꿀 수 있으며, 오라클 처럼 쓰려면 참조된 UDF로 추가하여 TO_CHAR를 쓸 수 있습니다.
7. UPPER() => UCASE()
8. 추가해야할 함수들[UDF함수 추가]
1) LPAD()
2) MONTHS_BETWEEN()
3) LASTDAY()
4) ADD_MONTHS()
9. 이건 함수 아니지만, OUTER JOIN 의 (+)은 안먹으니 LEFT OUTER JOIN, RIGHT OUTER JOIN 으로 다 바꿔야 합니다.
이 함수들은 주로 썼던 함수들이고요, 이거보다 더 많은 정보를 원하시는 분은 http://www.redbooks.ibm.com/abstracts/SG247048.html?Open 에서 PDF 파일을 받으셔서 참조하세요~
또한 오라클에서는 제공되나 DB2에서는 제공되지 않거나 좀 다르게 제공되는 함수들은 첨부파일로 올리니 참고하셈~
'DB2' 카테고리의 다른 글
DB2기초 : 재미있는 날짜와 시간 (0) | 2006.03.24 |
---|---|
DB2 UDB 시스템 카탈로그에서 유용한 정보를 얻는 방법 (0) | 2006.03.24 |
DB2의 제약조건 (0) | 2006.03.24 |
[본문스크랩] DB2 지원되는 함수 및 SQL 관리 루틴 (0) | 2006.03.22 |
DB2 UDB 운용명령어 (0) | 2006.03.20 |