1. NVL
- IFNULL 함수로 변경
- MariaDB : SELECT IFNULL(LAST_IP,'XXX') FROM CO_CD_ITEMCD_0;
1-1. NVL2
NVL2(expr,expr1,expr2)
-> expr의 값이 null이 아닐 경우에는 expr1의 값을 반환하고 null일 경우에는 expr2의 값을 반환
- CASE 문으로 변경 ( COALESCE()함수와는 다른용도임.)
- ORACLE : SELECT NVL2(MENU_ID, 'Y','N') AS NVL2 FROM MENU ;
- MYSQL : SELECT CASE WHEN MENU_ID IS NULL THEN 'N' ELSE 'Y' END AS NVL2 FROM MENU
2. SYSDATE 함수
- NOW() 함수로 변경
- Oracle : SELECT SYSDATE FROM DUAL;
- MariaDB : SELECT NOW() ; 또는 SELECT SYSDATE() ;
3. TRUNC(SYSDATE)
- CURDATE() 사용
- Oracle : SELECT TRUNC(SYSDATE) FROM DUAL;
- MariaDB : SELECT CURDATE() ;
4. TO_CHAR()
4-1. 데이트형을 문자로 변환
- DATE_FORMAT() 함수로 변경
- Oracle : SELECT TO_CHAR(SYSDATE, 'MMDDYYYYHH24MISS') FROM DUAL ;
- MariaDB : SELECT DATE_FORMAT(now(),'%m%d%Y%H%i%s') ;
( '%Y%m%d' 대소문자 주의!!! Y는 4자리, y는 2자리, %m은 12기준 %M은 24기준 )
( now()함수는 SYSDATE()함수로도 사용가능 )
4-2. 숫자를 문자로 변환하고 앞자리 공백대신 문자넣기
- LPAD() 사용
- Oracle : SELECT TO_CHAR(1, 'FM00') FROM DUAL;
- MariaDB : SELECT LPAD(1, 2, '0') ;
-> LPAD()함수는 오라클과 사용방법이 동일하다.
5. TO_DATE()
- STR_TO_DATE() 함수로 변경
- Oracle : SELECT TO_DATE('10/30/2012 00:00:00', 'MM/DD/YYYYHH24:MI:SS') FROM DUAL ;
- MariaDB : SELECT STR_TO_DATE('10/30/2012 00:00:00', '%m/%d/%Y %H:%i:%s') ;
6. CAST()
- Oracle 사용방법은 동일함.
- CAST('' AS VARCHAR(1)) 사용불가
-> CAST('' AS CHAR) 수정
7. DECODE()
- MariaDB에서는 DECODE는 암호화 예약어로 쓰인다.
- CASE문으로 대체해서 사용해야함.
[출처] [MariaDB] Oracle 함수를 MariaDB 함수로 변경|작성자 꿈의인생
'Database > MySQL & MariaDB' 카테고리의 다른 글
[MySQL/MariaDB] Replication 상태 확인 (0) | 2020.09.11 |
---|---|
[MySQL/MariaDB] MySQL/MariaDB 기본 명령어 (0) | 2020.09.11 |
[MySQL/MariaDB] root 패스워드 분실 시 조치방법 (0) | 2020.07.08 |
[MySQL/MariaDB] 특정테이블 목록 추출 및 백업/복구 (0) | 2020.07.04 |
[MySQL/MariaDB] Dump 하는 법 (0) | 2019.10.08 |