단일행 함수 - 변환함수 SQL
변환 함수
: 데이터 타입을 다른 데이터 타입으로 변환하는 함수.
데이터 타입의 변환 방법
1. 묵시적 형 변환 ( 권장 안함 )
2. 명시적 형 변환 ( 함수 이용 )
select empno, ename
from emp where empno = '7900';
select empno, ename
from emp where empno = to_number('7900');
TO_CHAR 함수
select ename, hiredate, to_char(hiredate,'YYYY"년" MM"월" DD"일"')
from emp where to_char(hiredate,'YY')='81';
문제) EMP 테이블에서 부서 20중 급여 앞에 $를 삽입하고 3자리마다 ,를 출
력?
select empno, ename, job, sal, to_char(sal, '$999,999')
from emp
where deptno = 20
order by sal desc;
TO_NUMBER 함수
TO_DATE 함수
오라클의 디폴트값이 RR/MM/DD이기 때문에 포멧을 변환시켜줘야
YYYY/MM/DD로 출력이 가능하다
alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';
변환후 출력가능.
select to_date('20200716','YYYYMMDD') from dual;
select to_date('19990220181030','YYYYMMDDHH24MISS') from dual;
CASE 함수 ( ANSI )
select empno, ename, sal, job,
CASE job WHEN 'ANALYST' THEN SAL1.1
WHEN 'CLERK' THEN SAL1.2
WHEN 'MANAGER' THEN SAL1.3
WHEN 'PRESIDENT' THEN SAL1.4
WHEN 'SALESMAN' THEN SAL*1.5
ELSE SAL
END "급여"
FROM EMP;
SELECT EMPNO, ENAME, SAL,
CASE WHEN SAL >=0 AND SAL <= 1000 THEN 'E'
WHEN SAL > 1000 AND SAL <= 2000 THEN 'D'
WHEN SAL > 2000 AND SAL <= 3000 THEN 'C'
WHEN SAL > 3000 AND SAL <= 4000 THEN 'B'
WHEN SAL > 4000 AND SAL <= 5000 THEN 'A'
END "등급"
FROM EMP
ORDER BY "등급";