※ NVL() 함수를 IFNULL() 함수로 변경한다.
※ SYSDATE 를 NOW() 함수로 변경한다.
※ TRUNC(SYSDATE) 함수를 CURDATE() 함수로 변경한다.
※ Subquery에 alias가 없다면 붙인다.
ex) select a, b from ( select a, b from ttt) => select t.a, t.b from ( select a, b from ttt) t
※ Outerjoin 변경
[Oracle]
left outer joing : SELECT t1.*, t2.* FROM t1, t2 where t1.i1 = t2.i2(+);
right outer joing: SELECT t1.*, t2.* FROM t1, t2 where t1.i1(+) = t2.i2;
[MySQL]
left outer joing : SELECT t1.*, t2.* FROM t1 LEFT OUTER JOIN t2 ON t1.i1 = t2.i2;
right outer joing: SELECT t1.*, t2.* FROM t1 RIGHT OUTER JOIN t2 ON t1.i1 = t2.i2;
% From절에서 테이블명 중간에 , 가 없다는것과 ON 구문이 From절 바로 뒤에 오게 해야하는것에 주의
※ TO_CHAR()를 DATE_FORMAT()으로 변환한다.
TO_CHAR(sysdate,'YYYYMMDD') =>DATE_FORMAT(now(),'%Y%m%d')
※ TO_DATE()를 DATE_FORMAT()으로 변환한다.
TO_DATE('20061020','YYYYMMDD') => DATE_FORMAT('20061020','%Y%m%d')로 변환
※ Where rownum <= 10 을 limit 10으로 변환한다.
rownum >= 5 와 rownum <= 10 이면 limit 4, 5
ex) 리스트 페이징에서 11번째부터 20번째까지 limit 10, 20
처음부터 10개 ........ LIMIT 10
5번째부터 10개 ........LIMIT 4, 10
5번째부터 마지막까지 .... LIMIT 4, -1
이때 주의 할 점은 첫번째 레코드의 시작은 “0” 입니다.
즉 “LIMIT 1, 3 - 2번째부터 3개” 의 결과를 출력하게 됩니다.
※ DELETE 테이블명 쿼리문을 DELETE FROM 테이블명 쿼리문으로 바꾸어준다.
※ 'MY'||'S'||'QL'를 CONCAT('MY','S','QL')으로 변환한다.
※ RANK() 는 존재하지 않는다.
SET @RANK := 0, @PREV := '';
SELECT no, @PREV := user_name AS user_name, jumsu
FROM (
SELECT *
FROM member
ORDER BY user_name, jumsu DESC
) AS TB
WHERE IF(user_name = @PREV, @RANK := @RANK + 1, @RANK := 1) <= 2;
MySQL 변수 셋팅으로 처리한다.
'DB' 카테고리의 다른 글
[Oracle]피벗(Pivot)과 언피벗(UnPivot) (0) | 2014.09.25 |
---|---|
[Oracle]Oracle 언어 확인 및 설정 (0) | 2014.06.09 |
[Oracle]NVL, NVL2, NULLIF (0) | 2014.01.20 |
[Oracle]Oracle INDEX (0) | 2012.11.14 |
[Oracle]Oracle Instant 설정 (0) | 2012.10.31 |