Oracle DB 2

함수

select count(*) from emp; -- 전체 row의 수
select length(ename) from emp; --ename의 길이
select lengthb(ename) from dual; -- 문자열 바이트 수
select abs(-10) from dual; --절댓값

select round(5.6) from dual; --반올림
select trunc(1234.123, 0) from dual; -- 1234  0번째자리 이후로 버림
select trunc(1234.123, -1) from dual; -- 1230  정수 1번째자리 이후로 버림

select mod(7,2) from dual; -- 나머지

select power(3,2) from dual; -- 9  제곱 구하는 함수
select ename from emp where lower(job)='manager'; -- 소문자
select ename from emp where job=upper('manager'); -- 대문자

select empno,ename from emp where job=upper('manager') order by empno asc;
-- from절 -> where -> select절 -> order by절 순으로 실행

-- substr(데이터, 시작위치, 추출할 개수)
select substr('엔코아 플레이데이터',5,6) from dual; --플레이데이터

-- date 타입에도 substr() 함수 사용 가능
-- 2월에 입사한 사원의 이름과 입사일
select ename, substr(hiredate,7,2) from emp where substr(hiredate,4,2)='02';

select trim(' abc ') from dual; -- 문자열 앞뒤의 잉여 여백 제거
select sysdate-1 어제, sysdate 오늘, sysdate+1 내일 from dual;
-- system 상의 날짜

select round(sysdate-hiredate) 근무일수 from emp;
-- 날짜간에도 연산 가능

-- add_months(날짜, 더할 개월수)
select sysdate, add_months(sysdate, 6) from dual;

-- months_between(날짜, 날짜)
select months_between(sysdate,'1996-06-22') from dual;

-- next_day(날짜, '요일')  날짜 기준으로 가장 가까운 요일의 날짜
select next_day(sysdate, '토요일') from dual;

-- 주어진 날짜를 기준으로 해당 달의 가장 마지막 날짜
select last_day(sysdate) from dual;
  1. to_char() : 날짜 -> 문자 , 숫자 -> 문자
-- 날짜
select to_char(sysdate, 'yyyy/mm/dd') from dual;

--dy는 요일 의미
select to_char(sysdate, 'yyyy-mm-dd dy') from dual;

-- hh:mi:ss = 12시간을 기준으로 시분초
select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual;

-- hh24:mi:ss = 24시간을 기준으로 시분초
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;

-- hh:mi:ss am = am과 pm은 오전 오후 의미, am을 주로 사용 
select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss am') from dual;

--숫자

-- 9 : 실제 데이터의 유효한 자릿수 숫자 의미(자릿수 채우지 않음)
-- 0 :	 "		(자릿수 채움)
-- . : 소수점 표현
-- , : 원단위 표현
-- $ : 달러 
-- L or l : 로케일의 줄임말(os 자체의 인코딩 기본 정보로 해당 언어의 기본 통화표현)
select to_char(1234, '9999.99') from dual;
select to_char(1234, '$9999,99') from dual;
select to_char(1234, '9999') from dual;
select to_char(1234, '999,999') from dual;
select to_char(1234, '99999') from dual;
select to_char(1234, '00000') from dual;
select to_char(1234, 'L99,999') from dual;
select to_char(1234, 'l99,999') from dual;
  1. to_number() : 문자열을 숫자로 변환
select to_number('20,000', 99999)/2 from dual;
select to_number('20,000', '99,999') - to_number('10,000', '99,999') from dual;
-- decode()-if or switch문과 같은 함수 ***
-- decode(조건칼럼, 조건값1,  출력데이터1,
--			   조건값2,  출력데이터2,
--				...,
--			   default값) from table명;

select deptno, decode(deptno, 10, 'A등급',
                              20, 'B등급',
                              'C등급') from dept;

select ename, sal, decode(job, 'ANALYST', sal*1.05,
                           'SALESMAN', sal*1.1,
                           'MANAGER', sal*1.15,
                           'CLERK' , sal*1.2,
                           sal) as 인상분 from emp;

Discussion and feedback