Oracle :
SELECT
CASE WHEN 컬럼명 NULL
THEN ''
ELSE 'ISNOTNULL'
END AS 컬럼명
FROM dual;
SELECT
CASE WHEN '' IS NULL
-- CASE WHEN '' = 1
THEN ''
ELSE 'Unknown'
END AS TESTNUM
FROM dual;
MySql :
select IF('컬럼명' IS NULL ,'', '컬럼명') from dual;
select IF('' IS NULL ,'ISNULL', 'ISNOTNULL') from dual;
Oracle : SELECT NVL('컬럼명', '') FROM DUAL;
MySql : SELECT IFNULL('컬럼명', '') FROM DUAL;
NVL 함수는 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그대로 출력한다.
NVL2 함수는 NULL이 아닌 경우 지정값1을 출력하고, NULL인 경우 지정값2를 출력한다.
Oracle : SYSDATE
Mysql : NOW()
Oracle : TO_CHAR(sysdate,'MMDDYYYYHH24MISS')
Mysql : DATE_FORMAT(now(),'%Y%m%d%H%i%s') -> 여기서 대문자Y는 4자리 년도,
소문자 y는 2자리 년도
Oracle : 요일이 1~7로 인식함 -> TO_CHAR(SYSDATE - 1, 'D')
Mysql : 요일이 0~6으로 인식 -> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%w')
년도
oracle : to_char(sysdate, 'YYYY')
mysql : YEAR(NOW())
Oracle : Like '%'||'문자'||'%' 이런식으로 컬럼명 앞뒤로 '%'를 붙여주면 된다
Mysql : LIKE CONCAT('문자','%') 이런식으로 CONCAT 함수 사용
Oracle : To_char, To_number 등
Mysql : CAST
SELECT TO_CHAR(1234) FROM DUAL
-> SELECT CAST(1234 AS CHAR) FROM DUAL
Oracle : 구분없음
Mysql : 기본적으로 구분하나, 설정으로 변경 가능함
Oracle : where 절에 rownum > 5 and rownum =< 10
Mysql : where절 없이 limit 5,10
Oracle : 시퀀스명.nextval
Mysql : 시퀀스명.currval
-- 기본적으로 컬럼에 순서대로 1 - n 조회시
SELECT ROWNUM
, a.*
FROM dual a
-- 특정 컬럼 order by 순서로 rownum할 때
SELECT
ROW_NUMBER() OVER (ORDER BY
'' desc) rownumb
FROM dual scc
Oracle: SUBSTR(문자열, 1, 10)
Mysql: SUBSTRING(문자열, 1,10), LEFT(문자열, 3), RIGHT(문자열, 3)
Oracle: 문자열(또는 컬럼) ||' - '
Mysql: CONCAT(문자열(또는 컬럼), ' - ')
Oracle: 컬럼명을 따옴표(")로 감싸기 (예: select "column" from tab)
Mysql: 컬럼명을 TAB 키 위에 있는 ` 키 ( Single quotation )로 감싸기
Oracle: CREATE OR REPLACE PROCEDURE 프로시저명
Mysql: DROP PROCEDURE IF EXISTS 프로시저명; 을 한 뒤에 CREATE PROCEDURE 프로시저명
TRUNC 함수는 주로 소수점 절사 및 날짜의 시간을 없앨 때 사용한다.
함수 : TRUNC("값", "옵션")
ADD_MONTHS : 월에 날짜 더하기
SELECT hire_date,
ADD_MONTHS(hire_date, 3) 더하기_적용결과,
ADD_MONTHS(hire_date, -3) 빼기_적용결과
FROM employees
WHERE employee_id BETWEEN 100 AND 106;
extract quarter from date oracle
SELECT
SYSDATE AS "Today's Date",
TO_CHAR(SYSDATE, 'Q') AS "Today's Quarter"
FROM DUAL;
-- oracle
SELECT NVL2(A.test, 'NOT NULL' ,'') from (SELECT null AS test FROM dual) A ;
SELECT A.test from (SELECT null AS test FROM dual) A ;