일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MongoDB Role 생성
- redis 설치
- MongoDB 계정
- centos
- MongoDB 계정 생성
- REDIS
- 통합테스트
- Mongodb 설치
- MongoDB
- MongoDB Role
- 테스트 자동화
- GEB
- Today
- Total
소울메이커
ORACLE을 MSSQL(2005)로 마이그레이션 시 가장 많이 변경 한 함수 모음 본문
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 |