
-- 숫자함수 select ABS(-15.5) from dual; -- 절대값 select floor(15.7) from dual; -- 소숫점 절삭 select round(-15.8) from dual; -- 정수타입으로 반올림 select round(-15.693, 2) from dual; -- 몇번째 자리까지 표시할 것인지 선택 select log(10, 100 ) from dual; -- 로그값(지수)구해줌 select power(3, 2) from dual; -- 제곱


-- 문자함수 select concat('나는', '손흥민입니다.') from dual; -- 두개붙여줌 select concat('저의 이름은', ename) from emp where job='MANAGER'; -- 응용 select LOWER('ABCD') "Lowercase" from dual; select lower(ename) from emp; select lpad('page 1',15,'*') from dual; -- 별표로 가려줌 select rpad('910119-2',14,'*') from dual; select substr('ABCEDFG',3,4) from dual; -- 3번째부터 4개 자른다 select rpad(substr('910119-2000000',1,8),14,'*') from dual; -- 응용 select Ltrim(' =from=','a') from dual; -- 제거 select Rtrim(' =from===== ',' ') from dual; select trim('=' from '=======from=======') from dual; select trim(' ' from ' =====from==== ') from dual; select REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL; -- J를 BL로 변경 select REPLACE('뽀준','준','선') "Changes" FROM DUAL;

-- 날짜함수 select sysdate from dual; -- 오늘날자 select sysdate+21 from dual; --14일 뒤 select add_months(sysdate, 4) from dual; -- 4개월 더해줌 select last_day(sysdate) from dual; -- 이달의 마지막날 알려줌..


-- 날짜 >문자 select sysdate from dual; select sysdate, to_char(sysdate, 'YYYY-MM-DD') "바뀐날짜" from dual; select sysdate, to_char(sysdate, 'YYYY-MM-DD Day dy')from dual; select sysdate, to_char(sysdate, 'YYYY-MM-DD Day dy AM PM HH HH24 mi ss') from dual; select to_char(sysdate, 'YYYY.MM.DD. HH24:mi:ss') from dual; -- 네이버st


-- 숫자 > 문자 SELECT TO_CHAR (1230000) FROM DUAL; select to_char(10000.123, 'L000,000.00') from dual; select to_char(10000, 'L999,999.99') from dual; select sal, to_char(sal*1100, 'L00,000,000') from emp; select sal, to_char(sal*1100, 'L99,999,999') from emp; select ename,sal, to_char(sal*1100*12+nvl(comm,0)*1100, 'L99,999,999') from emp order by sal desc;


-- 문자 > 날짜 -- 2020.11.01 select TO_DATE('2019/09/05', 'YYYY/MM/DD') from dual; select TO_DATE('2020.11.01.', 'YYYY.MM.DD.') from dual; -- 오늘이 2020년 1월 1일에서 몇일이 지났는지 확인해보자 :) select trunc(sysdate - to_date('20-01-01','YY-MM-DD')) from dual;

-- 문자 > 숫자 select TO_NUMBER('100.00', '999.99') * to_number('10.00', '99.99') from dual;

--사용법 DECODE(컬럼,조건,TRUE 결과값,FALSE 결과값) --예제 --TYPE 1이면 정규직 2면 비정규직 SELECT DECODE(TYPE,1,'정규직','비정규직') AS TYPE FROM EMP_TABLE --주민등록번호(MY_NUM)이(가) 1또는3으로 시작하면 남자 아니면 여자 SELECT DECODE(SUBSTRING(MY_NUM,0,1),1||3,'남','여') AS GENDER FROM EMP_TABLE
-- DECODE 함수 : switch 문과 비슷 -- 사원 이름, 부서번호, 부서이름 출력 select ename, deptno, decode(deptno, 10, 'ACCOUTING', 20, 'RESEARCH', 30, 'SALES', 40, 'OPERATIONS') as dname from emp; -- 8. 직급에 따라 급여를 인상하도록 하자. -- 직급이 'ANAlYST'인 사원은 5%, 'SALESMAN'인 사원은 10%, 'MANAGER'인 사원은 15%, -- 'CLERK'인 사원은 20%인 인상한다. select ename, job, sal, decode(job, 'ANALYST', sal*1.05, 'SALESMAN', sal*1.1, 'MANAGER', sal*1.15, 'CLERK', sal*1.2) as sal2 from emp ;



-- CASE 함수 select ename, deptno, case when deptno=10 then 'ACCOUNTING' when deptno=20 then 'RESEARCH' when deptno=30 then 'SALES' when deptno=40 then 'OPERATIONS' end as dname from emp order by dname ;
'DB > Oracle SQL' 카테고리의 다른 글
[ORACLE SQL] 서브쿼리 (0) | 2020.11.11 |
---|---|
[ORACLE SQL] 조인 (0) | 2020.11.11 |
[ORACLE SQL] 그룹함수 (0) | 2020.11.10 |
[ORACLE SQL] 정렬을 위한 order by (0) | 2020.11.09 |
[ORACLE SQL] where 조건과 비교 연산자 (0) | 2020.11.09 |
[ORACLE SQL] Select 절의 사칙연산 / distinct 중복생략 / as 정의 / null값 치환 nvl (0) | 2020.11.09 |
[ORACLE SQL] select * from; (0) | 2020.11.09 |