728x90
반응형
MySQL to Oracle
MySQL 5.6 version → Oracle 12 version
현재 MySQL을 Oracle로 변경하는 작업을 진행중이다.
* 어려운 쿼리는 없었으나 수정된 내용에 대해서 기록을 남기려고 한다.
1. MySQL 의 GROUP BY는 Alias 명을 통해서도 가능하며 선언한 컬럼을 MAX, MIN, SUM 등의 함수로 쓰지 않아도 Default로 MIN 값으로 적용된다.
ex ) 아래 처럼 MySQL은 Alias명으로 바로 GROUP BY를 처리할 수 있으며 선언하지 않은 ID는 Defalut로 MIN 값으로 적용된다.
-- MySQL
SELECT ID,
NAME AS NM,
SUM(SCORE) AS SUM
FROM STUDENTS
GROUP BY NM;
-- Oracle
SELECT MIN(ID) AS ID,
NM,
SUM(SCORE) AS SUM
FROM (SELECT ID,
NAME AS NM,
SCORE
FROM STUDENTS)
GROUP BY NM;
2. Spring MyBatis 설정시 Alias에 대한 설정을 넣어주지 않고 Query 실행시 리턴 타입이 Map이라면 MySQL과 Oracle에 차이가 발생한다.
ex ) MySQL로 Query를 작성 했을때, Alias를 소문자 또는 카멜케이스를 적용했다면 리턴시 Map의 key값들은 그대로 적용되지만 Oracle은 key값들이 대문자로 적용된다. ( MyBatis의 셋팅 문제인지 version의 문제인지 아직 파악하지 못했다. )
따라서, 쿼리를 수정할 때 Alias에 ""을 넣어서 변경하도록 해야한다.
-- MySQL
SELECT NOW() AS date FROM DUAL;
-- Oracle
SELECT SYSDATE AS "date" FROM DUAL;
728x90
반응형
'Database' 카테고리의 다른 글
[Database] SQL vs NoSQL (0) | 2023.03.26 |
---|---|
[Database] SQL Injection (0) | 2023.03.25 |
[Database] JOIN (0) | 2023.03.25 |
[Database] Key (0) | 2023.03.25 |
[Database] Oracle 12 (0) | 2020.02.27 |