Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

소울메이커

ORACLE을 MSSQL(2005)로 마이그레이션 시 가장 많이 변경 한 함수 모음 본문

프로그래밍

ORACLE을 MSSQL(2005)로 마이그레이션 시 가장 많이 변경 한 함수 모음

언젠간 프로 2013. 7. 11. 14:40

1. DECODE

    : 성가신 부분으로 왠만하면 애초에 ANSI 표준인 CASE문을 사용하여 개발하는게 나을 듯... 오라클, MSSQL 모두 해당...

      개발 후 절대 다른 DBMS로 마이그레이션 할 필요 없다면 그냥 DECODE 써도 됨...

      (오라클에서는 유용한 기능으로 많이 사용한다. 따라서 수정할 내용도 그만큼 많음...)


2. NVL, NVL2

    : 간단히 변환 가능 NVL(ORACLE) > ISNULL(MSSQL)

      NVL2는 컬럼 값이 NULL이 아닌 경우 첫번째 인자 값으로 대체하고 NULL인경우 두번째 인자 값으로 대체하는 기능. 

      MSSQL에서는 NVL2 기능을 대체할 수 있는 함수가 없으므로 직접 함수를 만들어야 함...

      함수 만들기 귀찮으면 CASE문을 사용해야 함..

   


3. TO_CHAR, TO_DATE, TO_NUMBER

    : ANSI 표준인 CAST를 이용하여 변환(MSSQL에서는 CONVERT라는 함수를 지원한다)

      다만 TO_DATE는 사용자 정의 함수(UDF)를 만들어 이용 함.. MSSQL에서 DATE타입은 제약사항이 많음.. 


4. ROWNUM

    : MSSQL에는 ROWNUM이 없다.. 대신 ROW_NUMBER() OVER(...)가 있음. 

      차이점은 OVER() 안에 반드시 정렬 기준이 들어가야 한다는점.. ROW_NUMBER()는 오라클에서도 지원함.


5. LPAD, RPAD

    : 설정한 길이에 맞춰 값의 왼쪽 혹은 오른쪽에 특정 문자로 채워 넣는 기능. 

      MSSQL에서는 이 기능을 지원하는 함수가 없으므로 REPLIDATE함수를 이용하여 그 기능을 대체한다.

      REPLICATE('0'/*대체 할 값*/, 10/*대체 할 값의 길이*/ - LEN(컬럼)/*컬럼길이*/) + 컬럼

      결과는 '00000000AA'/*컬럼값 AA 왼쪽에 10자리수에 맞춰 0의 값을 넣는다.*/


6. SEQUENCE

   : 오라클은 SEQUENCE를 이용하여 각 테이블 별 일련번호로 사용하는 경우가 있다. 

     현재 개발 한 시스템도 오라클 시퀀스를 사용 함... 

     이를 MSSQL에서는 IDENTITY라는 기능을 사용하여 대체 할 수 있다. 

     필요한 것은 시퀀스 정보를 담을 시퀀스 테이블, 시퀀스를 관리 할 프로시져.. 


7. INLINE VIEW를 사용 할 경우 

   : 오라클은 인라인 뷰를 사용할 경우 테이블 별칭을 사용하지 않아도 오류가 발생하지 않지만

     MSSQL에서는 인라인 뷰에 별칭이 없는 경우 오류가 발생한다. 별칭이 없을 경우 꼭 달아 주길..

     인라인 뷰? 

     인라인 뷰는 SELECT 쿼리를 가공하여 ()로 감싸 마치 가상 테이블처럼 사용하는 방법이다. 

     DRIVING TABLE 외에 따로 여러 테이블을 조인하여 가공한 데이터를 DRIVING TABLE에 조인 할 때 사용하는 방법. 


8. SUBSTR

   : MSSQL은 SUBSTRING으로 사용한다.

'프로그래밍' 카테고리의 다른 글

MSSQL 프로시져, 함수 생성, 수정, 삭제  (0) 2013.07.16
MSSQL의 NULL 그리고 공백문자...  (0) 2013.07.15
jstl 줄바꿈 처리  (0) 2013.06.10
오라클 11g update select  (0) 2013.06.05
ORACLE TIMESTAMP  (0) 2013.05.08