오라클 MySQL 차이 - olakeul MySQL chai

서울숲님의 블로그

데이터베이스/SQL

ORACLE vs MySQL SQL 구문 차이점 정리

서울숲 2022. 3. 22. 14:58

ORACLE vs MySQL SQL 구문 차이점 정리


NULL 대체

[ORACLE]

문법

NVL(열명, '대쳇값')

예제

SELECT NVL(column, 'N/A') col FROM tab;

[MySQL]

문법

IFNULL(열명, '대쳇값')

예제

SELECT IFNULL(column, 'N/A') col FROM tab;


페이징 처리

[ORACLE]

문법

ROWNUM <= 숫자

예제

SELECT col FROM tab WHERE ROWNUM <=5;

[MySQL]

문법

LIMIT 숫자

예제

SELECT col FROM tab WHERE LIMIT 5;


현재 날짜

[ORACLE]

문법

SYSDATE

예제

SELECT SYSDATE AS DATE FROM daul;

[MySQL]

문법

NOW()

예제

SELECT NOW() AS DATE;


조건문

[ORACLE]

문법

DECODE(열명, '값', '참값', '거짓값')

예제

SELECT DECODE(col, 'A', 'apple', 'banana') AS col FROM tab;

[MySQL]

문법

IF(조건식, '참값', '거짓값')

예제

SELECT IF(col = 'A', 'apple', 'banana') AS col FROM tab;


날짜 형식

[ORACLE]

문법

TO_CHAR(날짜열, '형식')

예제

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') AS date FROM dual;

[MySQL]

문법

DATE_FORMAT(날짜열, '형식')

예제

SELECT DATE_FORMAT(NOW(), '%Y%m%d %H%i%s') AS date;


시퀀스

[ORACLE]

문법

SELECT 시퀀스명.NEXTVAL FROM DUAL;

예제

SELECT SEQ_SAMPLE.NEXTVAL FROM dual;

[MySQL]

문법

SELECT NEXTVAL(시퀀스명);

예제

SELECT NEXTVAL(SEQ_SAMPLE);


문자 결합 (CONCAT)

[ORACLE]

문법

열값 또는 문자열 || 열값 또는 문자열
CONCAT(열값 또는 문자열, 열값 또는 문자열)

예제

SELECT 'A'||'B' FROM DUAL;

[MySQL]

문법

CONCAT(열값 또는 문자열, 열값 또는 문자열)

예제

SELECT CONCAT('A', 'B');


문자 추출 (Substring)

[ORACLE]

문법

SUBSTR(열값 또는 문자열, 시작 위치, 추출하려는 문자 개수)

예제

SELECT SUBSTR('ABCDEF', 2, 3) AS SUBSTRING FROM dual;

결과

BCD

[MySQL]

문법

SUBSTRING(열값 또는 문자열, 시작 위치, 추출하려는 문자 개수)

예제

SELECT SUBSTRING('ABCDEF', 2, 3) AS SUBSTRING FROM dual;

결과

BCD



구분 Oracle MySQL 쿼리 비교
NULL값 확인함수 NVL IFNULL (Oracle)
SELECT NVL(USER_ID,'') FROM DEPT;
(MySQL)
SELECT IFNULL(USER_ID,'') FROM DEPT;
현재날짜시간 확인 SYSDATE NOW() (Oracle)
SELECT SYSDATE FROM DUAL;
(MySQL)
SELECT NOW() FROM DUAL;
날짜 String으로 변경 TO_CHAR() DATE_FORMAT() (Oracle)
SELECT TO_CHAR(REG_DATE, 'YYYYMMDD HH24MISS') FROM DUAL;
(MySQL)
SELECT DATE_FORMAT(REG_DATE, '%Y%m%d%H%i%s') FROM DUAL;
요일변환 숫자범위 일~월(1~7) 일~월(0~6) (Oracle)
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;
(MySQL)
SELECT DATE_FORMAT(NOW(), '%w') FROM DUAL;
문자와 문자 병합 || CONCAT() (Oracle)
SELECT USER_ID FROM DEPT WHERE USER_ID LIKE '%' || 'DEPT' || '%';
(MySQL)
SELECT USER_ID FROM DEPT WHERE USER_ID LIKE CONCAT('%','DEPT','%');
형변환 TO_CHAR, TO_NUMBER CAST (Oracle)
SELECT TO_CHAR(1234) FROM DUAL;
(MySQL)
SELECT CAST(1234 AS CHAR) FROM DUAL;
페이징처리 ROWNUM LIMIT (Oracle)
SELECT * FROM (SELECT ROWNUM, A.* FROM (SELECT * FROM DEPT) A) WHERE ROWNUM BETWEEN 0 AND 10;
(MySQL)
SELECT * FROM DEPT LIMIT 0, 10;
시퀀스 다음번호 NEXTVAL CURRVAL (Oracle)
시퀀스명.NEXTVAL
(MySQL)
시퀀스명.CURRVAL

참고

https://spidyweb.tistory.com/12