Oracle DBA/SQL

20230623 (8) SQL 030 : 문자형으로 데이터 유형 변환하기

Nuez 2023. 6. 23. 14:31
반응형

변환함수

: 데이터 유형을 변환하는 함수

 

데이터 유형

: 1) 문자형, 2) 숫자형, 3) 날짜형

 

DESCRIBE emp;

      이름           널?            유형           
---------------- -------------- ------------ 
EMPNO    NOT NULL NUMBER(4)    
ENAME                       VARCHAR2(10) 
JOB                             VARCHAR2(9)  
MGR                           NUMBER(4)    
HIREDATE                  DATE         
SAL                             NUMBER(7,2)  
COMM                        NUMBER(7,2)  
DEPTNO                     NUMBER(2)    

 

TO_CHAR : 문자형으로 변환

TO_DATE : 날짜형으로 변환


날짜형 -> 문자형

TO_CHAR(날짜, 날짜형식)

날짜 형식에 하기의 키워드를 입력하면, 날짜를 문자로 출력하되 해당 형식으로 출력해줌. 

 

날짜 형식

1. 년도 : RRRR, YYYY, RR, YY

2. 월 : MM, MON

3. 일 : DAY, DY

4. 주 : WW, IW, W

5. 시간 : HH, HH24

6. 분 : MI

7. 초 : SS

8. 요일 : DAY, DY, D


문제108. 오늘날짜, 오늘 요일을 출력하시오.

SELECT sysdate, to_char(sysdate,'day')
FROM dual;


문제110. 이름, 입사일, 입사한 년도, 입사한 달, 입사한 일, 입사한 요일을 출력하시오.

SELECT ename, hiredate, to_char(hiredate,'RRRR'), to_char(hiredate, 'MM'), to_char(hiredate, 'DD'), to_char(hiredate, 'DAY')
FROM emp;


문제111. 1981년도에 입사한 사원들의 이름과 입사일을 출력하시오.

SELECT ename, hiredate
FROM emp
WHERE to_char(hiredate,'RRRR') = 1981;


숫자형 -> 문자형

TO_CHAR(숫자, 형식)

문제116. 이름, 월급을 출력하는데 월급을 출력할 때 천단위 표시를 하시오.

SELECT ename, to_char(sal, '999,999')
FROM emp;

설명 : 9는 해당 자리를 의미하고, 이 자리에 0~9까지 뭐가 와도 관계없다. 


SELECT ename, to_char(sal, '$999,999')
FROM emp;
SELECT ename, to_char(sal, 'L999,999')
FROM emp;

$를 함께 기입해서 출력해줄 수도 있다.

원화 표시를 하고 싶으면 L을 함께 기입해주면 된다. (L은 local 화폐 단위가 표시된다.)

 

원화 표시 제외, 타 국가 화폐단위로 나오게 하고 싶을 경우

시스템 자체 셋팅을 해당 국가로 변경시키거나, 연결 연산자를 통해서 가능하다. (아래 코드 참고)

SELECT ename, '$' || to_char(sal, '999,999')
FROM emp;