문자함수
-LOWER() -> 소문자로 변환
-> SELECT 'DataBase', LOWER('DataBase') FROM dual;
-UPPER() -> 대문자로 변환
-SUBSTR() -> 부분문자열 추출
-> SELECT SUBSTR('abcdef', 2, 4) FROM dual; ==> 인덱스 1부터, 인덱스 갯수
-LENGTH() -> 문자열 길이
-LPAD(), RPAD() -> 데이터 빈 공간을 특정 문자로 채움
->SELECT 'Oracle',
LPAD('Oracle', 10, '#') AS LPAD_1,
RPAD('Oracle', 10, '*') AS RPAD_1
FROM dual;
과목명 마지막 글자를 제외하고 출력
->SELECT cname, SUBSTR(cname,1, LENGTH(cname)-1) FROM course;
숫자함수
-MOD -> 나머지값 리턴
-> SELECT MOD(10, 3) FROM dual;
-ROUND -> 반올림값 리턴
-> SELECT ROUND(5443.323343, 2) FROM dual; (소수점을 올림)
-> SELECT ROUND(5443.323343, -2) FROM dual; (양의 정수값을 올림)
-TRUNC -> 특정위치 값 버리기
-> SELECT TRUNC(1234.5678) FROM dual;
-> SELECT TRUNC(1234.5678, 1) FROM dual;
날짜함수
-SYSDATE -> 현재 시간을 출력하는 함수
-> SELECT SYSDATE -1 "어제", SYSDATE "오늘", SYSDATE +1 "내일" FROM dual;
사원의 근속년수를 출력
->SELECT last_name AS 사원명, ROUND((SYSDATE - hire_date)/365,1) AS 근속년수 FROM employees;
변환함수
-TO_CHAR() - 숫자, 날짜 => 문자열 변환
->SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
->SELECT TO_CHAR(500000000, '$999,999,999') FROM dual;
07년에 입사한 사원의 목록을 출력
->SELECT * FROM employees
WHERE TO_CHAR(hire_date, 'YYYY') = 2007 ORDER BY hire_date;
-NVL() : NULL을 0 또는 디폴트값으로 변환
->SELECT employee_id, salary, NVL(commission_pct, 0) FROM employees;
사원의 연봉을 출력
->SELECT employee_id, (salary*12)+(salary* NVL(commission_pct, 0)) FROM employees;
-DECODE() : 조건에 따라 데이터를 다른 값으로 추출
-> SELECT job_id, DECODE(job_id, 'SA_MAN', 'Sales Dept', 'SH_CLERK', 'Sales Dept' , 'Another') FROM employees;
-CASE WHEN : if-else의 구조
-> SELECT department_id, CASE department_id
WHEN 10 THEN 'Accounting'
WHEN 20 THEN 'Sales'
WHEN 30 THEN 'Innovation'
ELSE 'Another'
END "CASE"
FROM employees;
'Database' 카테고리의 다른 글
[Oracle] 오라클 DB 제약조건 설정 (0) | 2020.08.14 |
---|---|
[Oracle] DDL 과 DML (INSERT, UPDATE, DELETE) (0) | 2020.08.13 |
[Oracle] GROUP BY절, HAVING절 (0) | 2020.08.11 |
[Oracle] 집합 UNION, MINUS, INTERSECT (0) | 2020.08.10 |
[Oracle] SELECT문 LIKE, NOT, IS NOT NULL 연산자 (0) | 2020.08.09 |