오라클에서 사용한 SQL 문을 POSTGRESQL 로 이관하면서 다른 점들을 해결한다.
DUAL
오라클에서 사용하는 DUAL
은 제외하고 사용하면 된다.
SELECT 1 FROM DUAL 과 같이 DUAL
을 사용할 수 없다.
SELECT 1
으로만 작성하면 된다.
SYSDATE
now()
함수를 사용한다
select now()
ROWNUM
오라클(Oracle)에서 사용하는 rownum
을 PostgreSQL에서 사용하는 방법
WHERE 절에서 사용
SELECT USER_ID
FROM USER_INFO
LIMIT 3
조회된 자료에서 3건의 데이터만 보여준다.
SELECT 절에서 사용
SELECT (ROW_NUMBER() OVER()) AS ROWRUM
, USER_ID
FROM USER_INFO
ROW_NUMBER()
함수를 통하여 ROWNUM을 생성한다.
BETWEEN
WHERE ROWNUM BETWEEN 1 AND 10
아래와 같이 변경한다.
SELECT * FROM
(SELECT (ROW_NUMBER() OVER()) RN )
WHERE RN BETWEEn 1 AND 10
만약 XML로 작성 중에 부등호를 사용한다면 CDATA
를 사용한다.
<![CDATA[
WHERE RN >= #{startPageNum} AND RN <= #{endPageNum}
]]>
SELECT 商品ID, 商品名, 卸単価 FROM 商品マスタ
WHERE 卸単価 IS NOT NULL
ORDER BY 卸単価 DESC
LIMIT 3 OFFSET 2;
SELECT *
FROM (SELECT 商品ID, 商品名, 卸単価, ROWNUM line
FROM (SELECT * FROM 商品マスタ
WHERE 卸単価 IS NOT NULL
ORDER BY 卸単価 DESC ))
WHERE line BETWEEN 3 AND 5;
DECODE
decode 는 case 문으로 변경한다.
DECODE(Z.REG_TYPE,'003',Z.REG_TYPE_NAME,Z.EVENT_TYPE_NAME)
case 문으로 변경한다.
CASE WHEN Z.REG_TYPE = '003'
THEN Z.REG_TYPE_NAME
ELSE Z.EVENT_TYPE_NAME
END
ALIAS 로 CONTENT 를 사용하는 경우
아래와 같은 쿼리문을 실행하면 에러 발생
SELECT event_seq content FROM EVENT_INFO
ERROR: syntax error at or near "content"
LINE 1: SELECT event_seq content FROM EVENT_INFO
^
********** Error **********
ERROR: syntax error at or near "content"
SQL state: 42601
Character: 18
아래와 같이 AS
를 넣어줘야 한다.
SELECT event_seq as content FROM EVENT_INFO
출처
- http://gent.tistory.com/19
- https://wiki.postgresql.org/wiki/Oracle_to_Postgres_Conversion
- https://thinkit.co.jp/free/marugoto/2/1/22/1.html
- http://www.supremedev.com/2
'Programming > PostreSQL' 카테고리의 다른 글
Postgresql 버전 확인 (0) | 2017.04.06 |
---|---|
Postgresql - DBLINK (0) | 2016.08.31 |
[PostgreSQL] 기본 강좌 정리 02 (0) | 2016.04.13 |
[PostgreSQL] 기본 강좌 정리 01 (0) | 2016.04.12 |
PostGIS (0) | 2016.04.10 |
댓글