일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 문자열
- Algorithm
- 자바
- 알고리즘
- darkest dark
- oracle
- 백준
- 동적계획법
- Eclipse
- 변수
- Java
- db
- n x 2 타일링 2
- JOIN
- 그대로 출력하기
- SQL
- ANSI JOIN
- algoritm
- 반복문
- Dynamic Programming
- 2156
- 데이터길이
- 오라클
- select
- 데이터베이스
- 10951
- 소숫점처리
- DP
- Database
- 입출력
- Today
- Total
Cracking Code
SQL - TO_CHAR, TO_NUMBER, TO_DATE 본문
SQL 함수로 데이터형 간에 변환을 이뤄주는 함수에 대해서 알아보겠습니다.
시작하기 전에 용어 정리 들어갑니다!
묵시적 형변환: DBMS에서 알아서 판단하고 자동으로 데이터형을 변환
명시적 형변환: 사용자가 어떤 형태로 데이터를 변환시킬지 명시하여 변환
1. TO_CHAR
TO_CHAR(n | date, 'format')
숫자, 날짜, 문자열을 지정한 format의 VARCHAR2 문자열로 변환합니다.
예제로 알아보기 앞서서 포맷에 쓰이는 문자들을 알아볼까요?
YYYY 년도를 숫자로 표시
YEAR 년도를 영문 표시
MM 월을 숫자로 표시
MONTH 월을 영문 표시
MON 월을 영문 3자리 표시
DY 요일을 영문 3자리, 한글 1자리 표시
DAY 요일을 영문, 한글로 표시
DD 일을 숫자로 표시
AM | PM 오전 또는 오후 표시
A.M. | P.M. 오전 또는 오후 표시
HH 또는 HH12 1~12시 표시
HH24 1~24시 표시
MI 분 표시
SS 초 표시
SSSSS 자정 이후 초 표시
9 숫자 영역 표시
0 숫자의 앞부분 0으로 표시
$ 달러 표시
L 지역 화폐 단위 표시
. 소수점 표시
, 단위 구분자 표시 ex) 999,999
현재 일시를 숫자로 표시, 오전인지 오후인지, 요일은 1자리로 표시, 24시간 형태로 시간을 출력해봅시다.
SELECT TO_CHAR(SYSDATE,
'YYYY/MM/DD, (AM) DY HH24:MI:SS')
FROM DUAL;
사원 테이블에서 고용일이 12월인 사원의 사번, 사원명, 고용일을 검색해봅시다.
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE TO_CHAR(HIREDATE, 'MM') = '12';
우리는 TO_CHAR로 문자열 변환을 시켜주었기 때문에 명시적으로 12를 작은 따옴표로 감싸주었습니다.
감싸지 않으면 묵시적 형변환을 일으켜 12 -> TO_CHAR(12) -> '12' 로 한 번 더 함수를 자동으로 수행합니다.
그럼 필요없는 연산이 이뤄지게 됩니다😥
사원 테이블에서 부서 번호가 20인 사원의 이름과 급여,
급여에 맨 앞엔 $표시를 넣고 3자리의 단위 구분을 해서 검색해봅시다.
SELECT ENAME, SAL, TO_CHAR(SAL, '$999,999')
FROM EMP
WHERE DEPTNO = 20;
2. TO_NUMBER
TO_NUMBER(CHAR)
숫자를 포함하는 문자열을 숫자로 변환합니다.
숫자 연산이 필요할 때 사용하면 되겠죠?
문자열 '1234'를 숫자로 변환하고 100을 더해 출력해봅시다.
SELECT TO_NUMBER('1234') + 100
FROM DUAL;
문자열 1234가 숫자로 변환되어 숫자 100을 더한 값이 잘 출력되었습니다.
3. TO_DATE
TO_DATE(char, [, format])
문자열을 format에 맞춰 날짜 데이터로 변환합니다.
'19990220' 문자열을 날짜 데이터 포맷에 맞춰서 출력해볼까요?
SELECT TO_DATE('19990220',
'YYYY/MM/DD')
FROM DUAL;
현재 제 데이터베이스의 날짜 포맷은 YY/MM/DD로 되어 있기에
년도가 2자리 수로 표현됩니다.
본문에선 데이터의 형변환 함수를 알아보았습니다.
날짜에서 원하는 포맷을 추출할 때 TO_CHAR를 사용하면 좀 더 편하게 원하는 데이터를 추출할 수 있겠네요!
'Database' 카테고리의 다른 글
SQL - DECODE (0) | 2020.07.19 |
---|---|
SQL - CASE (0) | 2020.07.19 |
SQL - MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY (0) | 2020.07.18 |
SQL - CEIL, FLOOR, ROUND,TRUNC (0) | 2020.07.17 |
SQL - REPLACE (0) | 2020.07.16 |