본문 바로가기

Database

[Oracle] DB 문자함수, 숫자함수, 날짜함수, 변환함수

 

문자함수



-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;