Oracle to MSSQL 쿼리 변환 시 검토할 점 |
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 절에 ROWNUMBER() 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)
MSSQL - CONVERT(VARCHAR, Number)
이외에도 차이점이 있을 것이나, 제가 변환하면서 필요한 내용을 정리한 것입니다.
도움이 되었으면 좋겠습니다.
'IT 개발' 카테고리의 다른 글
[오라클|Oracle] 위(이전)/아래(이후) Row의 값 가져오기 - LAG, LEAD (0) | 2014.07.16 |
---|---|
[오라클|Oracle] 여러 개의 테이블을 하나처럼 만들기 - UNION / UNION ALL (0) | 2014.07.12 |
[오라클|Oracle] 테이블끼리 조인 걸기 - INNER JOIN, LEFT OUTER JOIN (1) | 2014.07.04 |
[오라클|Oracle] String 원하는 만큼 자르기 – SUBSTR (0) | 2014.07.02 |
[오라클|Oracle] 날짜타입 가지고 놀기 - TO_DATE, TO_CHAR (2) | 2014.07.02 |