📌 기본 함수 매핑
| 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 |
| &&, ` |