📌 기본 함수 매핑
MySQL | ORACLE |
NOW() | SYSDATE (초 단위)SYSTIMESTAMP (밀리초까지) |
CURDATE() | TRUNC(SYSDATE) |
DATE_FORMAT(d, '%Y-%m-%d') | TO_CHAR(d, 'YYYY-MM-DD') |
STR_TO_DATE(s, '%Y-%m-%d') | TO_DATE(s, 'YYYY-MM-DD') |
IFNULL(expr, alt) | NVL(expr, alt) |
COALESCE(a,b,c) | 동일: COALESCE(a,b,c) |
CONCAT(a,b,c) | a || b || c |
LENGTH(str) | LENGTH(str) (문자 개수)LENGTHB(str) (바이트 수) |
SUBSTRING(str, pos, len) | SUBSTR(str, pos, len) |
LOCATE(substr, str) | INSTR(str, substr) |
REPLACE(str, from, to) | REPLACE(str, from, to) |
TRIM(str) | TRIM(str) |
LTRIM(str) | LTRIM(str) |
RTRIM(str) | RTRIM(str) |
UPPER(str) | UPPER(str) |
LOWER(str) | LOWER(str) |
ROUND(num, d) | ROUND(num, d) |
FLOOR(num) | FLOOR(num) |
CEIL(num) | CEIL(num) |
ABS(num) | ABS(num) |
📌 DML / 쿼리 구문
MySQL | Oracle |
LIMIT 10 | FETCH FIRST 10 ROWS ONLY (12c+)또는 WHERE ROWNUM <= 10 |
LIMIT 10, 20 | OFFSET 10 ROWS FETCH NEXT 20 ROWS ONLY |
AUTO_INCREMENT | SEQUENCE + TRIGGER 또는 IDENTITY (12c+) |
BOOLEAN | 없음 → NUMBER(1) 또는 CHAR(1) (Y/N) |
TINYINT(1) | NUMBER(1) |
UNSIGNED | 없음 → NUMBER로 대체 |
ENGINE=InnoDB | Oracle은 스토리지 엔진 선택 개념 없음 |
📌 날짜/시간 함수
MySQL | ORACLE |
DATEDIFF(d1, d2) (일수 차이) | d1 - d2 (결과 = 일수)TRUNC(d1) - TRUNC(d2) |
TIMESTAMPDIFF(SECOND, d1, d2) | EXTRACT(SECOND FROM (d2 - d1) DAY TO SECOND) |
ADDDATE(d, n) | d + n (일 단위 더하기) |
DATE_ADD(d, INTERVAL n DAY) | d + n |
DATE_SUB(d, INTERVAL n DAY) | d - n |
LAST_DAY(d) | 동일: LAST_DAY(d) |
DAYOFMONTH(d) | TO_NUMBER(TO_CHAR(d, 'DD')) |
MONTH(d) | TO_NUMBER(TO_CHAR(d, 'MM')) |
YEAR(d) | TO_NUMBER(TO_CHAR(d, 'YYYY')) |
📌 조건/논리 구문
MySQL | ORACLE |
IF(cond, a, b) | CASE WHEN cond THEN a ELSE b END |
CASE ... END | 동일: CASE ... END |
&&, ` |