ROUND 함수 1) 특정 위치에서 반올림하기 2) ROUND([숫자], [반올림 위치(선택)]) 3) 반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 반올림이 수행된다. |
사용 예시
SELECT
ROUND(1234.5678) AS ROUND, -- 소수점 첫째자리 반올림 //1234
ROUND(1234.5678, 0) AS ROUND_0, -- 소수점 첫째자리 반올림 //1234
ROUND(1234.5678, 1) AS ROUND_0, -- 소수점 둘째자리 반올림 //1234.6
ROUND(1234.5678, 2) AS ROUND_0, -- 소수점 셋째자리 반올림 //1234.57
ROUND(1234.5678, -1) AS ROUND_MINUS1, -- 자연수 첫째자리 반올림 //1230
ROUND(1234.5678, -2) AS ROUND_MINUS2 -- 자연수 둘째자리 반올림 // 1200
FROM DUAL;
TRUNC 함수 1) 특정 위치에서 숫자 버리기 2) TRUNC([숫자], [버림 위치(선택)]) 3) 반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 버림 처리된다. |
사용 예시
SELECT
TRUNC(1234.5678) AS TRUNC, // 1234
TRUNC(1234.5678, 0) AS TRUNC_0, //1234
TRUNC(1234.5678, 1) AS TRUNC_1, //1234.5
TRUNC(1234.5678, 2) AS TRUNC_2, //1234.56
TRUNC(1234.5678, -1) AS TRUNC_MINUS1, //1230
TRUNC(1234.5678, -2) AS TRUNC_MINUS2 //1200
FROM DUAL;
CEIL, FLOOR 함수 1) CEIL : 지정한 숫자와 가까운 큰 정수를 반환 2) FLOOR : 지정한 숫자와 가까운 작은 정수를 반환 3) CEIL([숫자]), FLOOR([숫자]) |
사용 예시
SELECT
CEIL(3.14), // 4
FLOOR(3.14), // 3
CEIL(-3.14), // -3
FLOOR(-3.14) // -4
FROM DUAL;
MOD 함수 1) 숫자를 나눈 나머지 값을 구하기 2) MOD([나눗셈 될 숫자], [나눌 숫자]) |
사용 예시
SELECT
MOD(15, 6), // 3
MOD(10, 2), // 0
MOD(11, 2) // 1
FROM DUAL;
SYSDATE 함수 : 오라클 데이터베이스 서버가 놓인 OS(Operator System:운영체제)의 현재 날짜와 시간 출력 |
사용 예시
SELECT
SYSDATE
FROM DUAL;
날짜 데이터의 연산 1) 날짜 데이터 + 숫자 : 날짜 데이터보다 숫자만큼 일수 이후의 날짜 2) 날짜 데이터 - 숫자 : 날짜 데이터보다 숫자만큼 일수 이전의 날짜 3) 날짜 데이터 - 날짜 데이터 : 두 날짜 데이터 간의 일수 차이 4) 날짜 데이터 + 날짜 데이터 : 연산 불가. 지원하지 않음(*) |
사용 예시
SELECT
SYSDATE AS NOW, // 22/01/03
SYSDATE - 1 AS YESTERDAY, // 22/01/02
SYSDATE + 1 AS TOMORROW // 22/01/04
FROM DUAL;
ADD_MONTHS 함수 1) 특정 날짜에 지정한 개월 수 이후 날짜 데이터를 반환 2) ADD_MONTHS([날짜 데이터], [더할 개월 수]) |
사용 예시
SELECT
SYSDATE,
ADD_MONTHS(SYSDATE, 3)
FROM DUAL;
[실습 3-2] 사원이 입사한 지 10주년이 되는 날짜 구하기
SELECT EMPNO, ENAME,
HIREDATE, ADD_MONTHS(HIREDATE, 120) AS WORK10YEAR
FROM EMP;
[실습 3-3] 입사한 지 35년(420개월)이 되지 않은 사원 출력하기
SELECT EMPNO, ENAME, HIREDATE, ADD_MONTHS(HIREDATE, 420), SYSDATE
FROM EMP
WHERE ADD_MONTHS(HIREDATE, 420) > SYSDATE;
MONTHS_BETWEEN 함수 1) 두 날짜 간의 개월 수 차이 구하기 2) MONTHS_BETWEEN([날짜 데이터1], [날짜 데이터2]) |
사용 예시
SELECT
SYSDATE,
ADD_MONTHS(SYSDATE, 3)
FROM DUAL;
[실습 4-1] HIREDATE와 SYSDATE 사이의 개월 수를 MONTHS_BETWEEN 함수로 출력하기
SELECT EMPNO, ENAME, HIREDATE, SYSDATE,
MONTHS_BETWEEN(HIREDATE, SYSDATE) AS MONTHS1,
MONTHS_BETWEEN(SYSDATE, HIREDATE) AS MONTHS2,
TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) AS MONTHS3 // 버림을 해줘야 함
FROM EMP;
NEXT_DAY, LAST_DAY 함수 1) NEXT_DAY - 입력한 날짜 데이터에서 돌아오는 요일의 날짜를 반환 - NEXT_DAY([날짜 데이터], [요일 문자]) 2) LAST_DAY - 해당 날짜가 속한 달의 마지막 날짜를 반환 - LAST_DAY([날짜 데이터]) |
사용 예시
[실습 5-1] NEXT_DAY, LAST_DAY 함수를 사용하여 출력하기
SELECT SYSDATE,
NEXT_DAY(SYSDATE,'월요일'), // 22/01/10
LAST_DAY(SYSDATE) // 22/01/31
FROM DUAL;
ROUND, TRUNC 함수 1) 숫자 데이터의 반올림, 버림 처리에 사용한 ROUND, TRUNC 함수를 날짜 데이터를 입력 데이터로 사용할 수 있다. 2) ROUND([날짜데이터], [반올림 기준 포맷]), TRUNC([날짜데이터], [버림 기준 포맷]) 3) 포맷 값 추가 정리 필요 |
사용 예시
SELECT SYSDATE,
ROUND(SYSDATE, 'CC') AS FORMAT_CC,
ROUND(SYSDATE, 'YYYY') AS FORMAT_YYYY,
ROUND(SYSDATE, 'Q') AS FORMAT_Q,
ROUND(SYSDATE, 'DDD') AS FORMAT_DDD,
ROUND(SYSDATE, 'HH') AS FORMAT_HH
FROM DUAL;
[실습 6-2] TRUNC 함수 사용하여 날짜 데이터 출력하기
SELECT SYSDATE,
TRUNC(SYSDATE, 'CC') AS FORMAT_CC,
TRUNC(SYSDATE, 'YYYY') AS FORMAT_YYYY,
TRUNC(SYSDATE, 'Q') AS FORMAT_Q,
TRUNC(SYSDATE, 'DDD') AS FORMAT_DDD,
TRUNC(SYSDATE, 'HH') AS FORMAT_HH
FROM DUAL;
TO_CHAR 1) 숫자 또는 날짜 데이터 → 문자 데이터 2) TO_CHAR([날짜데이터], [출력되길 원하는 문자 형태]) 3) 형식문자의 종류 P.159 4) 기본 형식 TO_CHAR([날짜 데이터], [출력되길 원하는 문자 형태], 'NLS_DATE_LANGUAGE = language(선택)') 5) 숫자 데이터를 문자 데이터로 변환하는 형식의 종류 P.162 |
사용 예시
[실습 1-1] 숫자와 문자열(숫자)을 더하여 출력하기
SELECT EMPNO, ENAME, EMPNO + '500' // 숫자로 자동형변환 되어 덧셈 연산이 됨
FROM EMP
WHERE ENAME = 'SCOTT';
[실습 1-2] SYSDATE 날짜 형식 지정하여 출력하기
SELECT
TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS 현재날짜시간 // 2022/01/03 13:27:05
FROM DUAL;
[실습 1-3] 월과 요일을 다양한 형식으로 출력하기
SELECT SYSDATE,
TO_CHAR(SYSDATE, 'MM') AS MM, // 01
TO_CHAR(SYSDATE, 'MON') AS MM, // 1월
TO_CHAR(SYSDATE, 'MONTH') AS MM, // 1월
TO_CHAR(SYSDATE, 'DD') AS DD, // 03
TO_CHAR(SYSDATE, 'DY') AS DY, // 월
TO_CHAR(SYSDATE, 'DAY') AS DAY // 월요일
FROM DUAL;
[실습 1-4] 여러 언어로 날짜(월) 출력하기
SELECT SYSDATE,
TO_CHAR(SYSDATE, 'MM') AS MM,
TO_CHAR(SYSDATE, 'MON', 'NLS_DATE_LANGUAGE = KOREAN' ) AS MON_KOR,
TO_CHAR(SYSDATE, 'MON', 'NLS_DATE_LANGUAGE = JAPANESE' ) AS MON_KOR,
TO_CHAR(SYSDATE, 'MON', 'NLS_DATE_LANGUAGE = ENGLISH' ) AS MON_KOR,
TO_CHAR(SYSDATE, 'MONTH', 'NLS_DATE_LANGUAGE = KOREAN' ) AS MONTH_KOR,
TO_CHAR(SYSDATE, 'MONTH', 'NLS_DATE_LANGUAGE = JAPANESE' ) AS MONTH_KOR,
TO_CHAR(SYSDATE, 'MONTH', 'NLS_DATE_LANGUAGE = ENGLISH' ) AS MONTH_KOR
FROM DUAL;
[실습 1-5] SYSDATE 시간 형식 지정하여 출력하기
SELECT SYSDATE,
TO_CHAR(SYSDATE, 'HH24:MI:SS') AS HH23MISS,
TO_CHAR(SYSDATE, 'HH24:MI:SS AM') AS HH23MISS_AM,
TO_CHAR(SYSDATE, 'HH24:MI:SS P.M.') AS HH23MISS_PW
FROM DUAL;
[실습 1-6] 여러 가지 숫자 형식을 사용하여 급여 출력하기
SELECT SAL,
TO_CHAR(SAL, '$999,999') AS SAL_$,
TO_CHAR(SAL, 'L999,999') AS SAL_L,
TO_CHAR(SAL, '999,999.00') AS SAL_L_1,
TO_CHAR(SAL, '000,999,999.00') AS SAL_L_2,
TO_CHAR(SAL, '000999999.99') AS SAL_L_3,
TO_CHAR(SAL, '999,999,00') AS SAL_L_4
FROM EMP;
TO_NUMBER 1)문자 데이터 → 숫자 데이터 2) TO_NUMBER([문자 데이터], [인식될 숫자형태]) |
사용 예시
SELECT
1300 - '1500',
'1300' + 1500
FROM DUAL;
// 이렇게 알아서 형변환이 되기도 하지만, TO_NUMBER 를 사용할 수도 있다.
[실습 2-2] 문자 데이터를 숫자 형태로 강제로 인식시켜주는 TO_NUMBER
SELECT
TO_NUMBER('1,300', '999,999'),
TO_NUMBER('1,500', '999,999'),
TO_NUMBER('1,300', '999,999') - TO_NUMBER('1,500', '999,999')
FROM DUAL;
TO_DATE 1) 문자 데이터 → 날짜 데이터 2) TO_DATE([문자열 데이터], [인식될 날짜형태]) |
사용 예시
[실습 3-1] TO_DATE 함수로 문자 데이터를 날짜 데이터로 변환하기
SELECT
TO_DATE('2018-07-14', 'YYYY-MM-DD') AS TODATE1,
TO_DATE('20180714', 'YYYY-MM-DD') AS TODATE2
FROM DUAL;
[실습 3-2] 1981년 6월 1일 이후에 입사한 사원 정보 출력하기
SELECT * FROM EMP WHERE HIREDATE > TO_DATE('1981/06/01', 'YYYY-MM-DD');
NVL 함수 . NULL 처리 함수 . 기본 형식 NVL([NULL인지 여부를 검사할 데이터 또는 열], [앞의 데이터가 NULL일 경우 반환할 데이터]) . 열 또는 데이터를 입력하여 해당 데이터가 NULL이 아닐 경우 데이터를 그대로 반환하고, NULL인 경우 지정한 데이터를 반환한다. |
사용 예시
[실습 1-1] NVL 함수를 사용하여 출력하기
SELECT EMPNO, ENAME, SAL, COMM, SAL+COMM,
NVL(COMM, 0), // COMM 이 NULL 이면 0 을 반환합니다.
SAL+NVL(COMM, 0) // SAL 과 합산하여 출력합니다.
FROM EMP;
NVL2 함수 . NVL 함수와 비슷하지만 데이터가 NULL이 아닐 때 반환할 데이터를 추가로 지정해 줄 수 있다. . 기본 형식 NVL2([NULL인지 여부를 검사할 데이터 또는 열], [앞 데이터가 NULL이 아닐 경우 반환할 데이터 또는 계산식], [앞 데이터가 NULL일 경우 반환할 데이터 또는 계산식]) |
사용 예시
[실습 2-1] NVL2 함수를 사용하여 출력하기
SELECT EMPNO, ENAME, COMM,
NVL2(COMM, '0', 'X'),
NVL2(COMM, SAL*12+COMM, SAL*12) AS ANNSAL // COMM 이 NULL 이 아니면 SAL*12_COMM 을, NULL이면 SAL*12를 반환합니다.
FROM EMP;
DECODE 함수 . 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수 . 자바의 if 조건문 또는 switch-case 조건문과 비슷한다. . 기본 형식 DECODE( [검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과], [조건1], [데이터가 조건1과 일치할 때 반환할 결과], [조건2], [데이터가 조건2와 일치할 때 반환할 결과], ... [조건N], [데이터가 조건n과 일치할 때 반환할 결과], [위 조건1~조건n과 일치할 경우가 없을 때 반환할 결과] ) |
사용 예시
SELECT EMPNO, ENAME, JOB, SAL,
DECODE(JOB,
'MANAGER', SAL*1.1, // 첫 번째 조건, JOB == MANAGER 이면, SAL * 1.1
'SALESMAN', SAL*1.05, // 두 번째 조건, JOB == SALESMAN 이면, SAL * 1.05
'ANALYST', SAL, // 세 번째 조건, JOB == ANALYST 이면, SAL
SAL*1.03) AS UPSAL // 그 외, SAL * 1.03
FROM EMP;
CASE문 . CASE문은 각 조건에 사용하는 데이터가 서로 상관없어도 된다. (=기준값이 없어도 된다) . 기본 형식 CASE [] WHEN [조건1] THEN [조건1의 결과 값이 true일 때, 반환할 결과] WHEN [조건2] THEN [조건1의 결과 값이 true일 때, 반환할 결과] ... WHEN [조건n] THEN [조건n의 결과 값이 true일 때, 반환할 결과] ELSE [위 조건1~조건n과 일치하는 경우가 없을 때 반환할 결과] END |
사용 예시
SELECT EMPNO, ENAME, JOB, SAL,
CASE JOB
WHEN 'MANAGER' THEN SAL*1.1
WHEN 'SALESMAN' THEN SAL*1.05
WHEN 'ANALYST' THEN SAL
ELSE SAL*1.03
END AS UPSAL
FROM EMP;
[실습 2-2] 열 값에 따라서 출력 값이 달라지는 CASE문
SELECT EMPNO, ENAME, COMM,
CASE
WHEN COMM IS NULL THEN '해당사항 없음'
WHEN COMM = 0 THEN '수당없음'
WHEN COMM > 0 THEN '수당 : ' || COMM
END AS COMM_TEXT
FROM EMP;
'SQL' 카테고리의 다른 글
[ORACLE] 기본 문법 4 _데이터 조작어 (0) | 2022.01.03 |
---|---|
[ORACLE] 기본 문법 3 (0) | 2022.01.03 |
[ORACLE] 기본 문법 1 (0) | 2022.01.03 |
[Oracle] 오라클 사용법_기초 (0) | 2022.01.03 |
[SQL] JAVA 와 연동하는 방법 (0) | 2021.11.30 |
댓글