프로필사진
owgno6
CODELIB
Recent Posts
Recent Comments
«   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

티스토리 뷰

SQL

ORACLE함수에서 MSSQL함수로 변환

owgno6 2018. 11. 12. 13:12

1. Sub Query에 Alies는 필수


2. Sub Query 내에 ORDER BY 절을 사용할 수 없음


3. NVL 함수는 ISNULL로 대체


4. SUBSTR 함수는 SUBSTRING으로 대체


5. 문자열 연결 ||는 +로 대체


6. TRIM 함수는 LTRIM(RTRIM(FieldName))으로 대체


7. STDDEV 함수는 STDEV로 대체


8. CEIL 함수는 CEILING으로 대체


9. ROWNUM

    - ORDER BY 절 없이 WHERE 절에서 ROWNUM = 1 사용 시 SELECT 절에서 Top1으로 대체

    - ORDER BY  절 사용 시, SELECT 절에 ROW_NUMBER() OVER (ORDER BY Field1...FieldN) 으로 대체


10. MOD 함수는 %로 대체

    예) ORACLE - MOD(10, 3)

         MSSQL  - 10%3


11. MINUS 함수는 EXCEPT로 대체


12. DECODE 문은 CASE...WHEN...THEN 문으로 대체


13. LENGTH 함수는 LEN으로 대체


14. ROUND 함수는 두 번째 자리수까지 써줘야 됨

    예) ORACLE - ROUND(Number) 가능. 

         MSSQL  - ROUND(Number, 0)까지 써줘야 함


15. TRUNC(Number) 함수는 ROUND(Number, 0, 1)로 대체


16. 숫자 연산 시 MSSQL은 기본이 Integer 형이므로 소수점 이하를 표시하기 위해서는 DECIAML로 캐스팅 해줘야 함

    예) SELECT 10 / 3 -> 3

         SELECT 10 / CASE(3 AS DECIMAL) -> 3.333333333333333


17. MSSQL에서는 'YYYYMMDDHH24MISS' 형식의 날짜 포멧이 지원되지 않음


18. (+) 형태의 구문은 OUTER JOIN 형태로 대체

    예) ORACLE - SELECT * FROM Table A, Table B WHERE A.Field = B.Field(+)

         MSSQL  - SELECT * FROM Table A LEFT OUTER JOIN Table B ON A.Field = B.Field


19. ORDER BY 결과에 NULL 값의 위치가 다름

    예) ORACLE - ORDER BY Field 결과에 NULL 값이 가장 나중에 조회

         MSSQL  - ORDER BY Field 결과에 NULL 값이 가장 빠르게 조회 


20. TO_CHAR 함수는 CONVERT로 변환

    예) ORACLE - TO_CHAR(Number)

                       TO_CHAR(SYSDATE,'YYYY-MM-DD') -> 2003-01-23

                       TO_CHAR(2500000,'9,999,999.99') -> 2,500,000.00


          MSSQL - CONVERT(VARCHAR, Number)

                       CONVERT(VARCHAR(10),GETDATE(),120) -> 2003-01-23

                       CONVERT(varchar(20),   convert(money,2500000),1) -> 2,500,000.00


21. SYSDATE 함수는 GETDATE()로 변환


댓글