Language/Oracle
[Oracle] SQL FUNCTION_04 : 변환 함수
생각하는 감쟈🥔
2024. 3. 19. 17:32
4. 변환함수
더보기
CAST() (일시적으로 타입을 변경)
TO_CHAR() (문자타입으로 변환)
TO_DATE(), (날짜타입으로 변환)
TO_NUMBER() (숫자타입으로 변환)
1. CAST()
- 일시적으로 타입을 변경
- 'expr'을 'type'으로 형변환
- 'type'은 오라클의 모든 타입 사용가능
- 형식을 지정하지 못해 사용빈도는 낮음
사용예)
SELECT CAST(PROD_COST AS CHAR(20)),
CAST(SUBSTR(PROD_ID,2) AS NUMBER(30))
FROM PROD
WHERE PROD_LGU='P201';
2. TO_CHAR(date[,fmt])
- 문자타입으로 변환
- 주어진 자료(숫자,날짜,문자열)을 'fmt' 형식을 문자열 자료로 변환
- data가 문자열인 경우 CHAR, CLOB 타입의 데이터만 허용
- 'fmt' 날짜형과 숫자형이 있으며 생략되면 단순 문자열을 형 변환
1) 날짜형 형식지정 문자열
-------------------------------------------------------------------------------------------------
형식문자열 의미 사용예
-------------------------------------------------------------------------------------------------
AD, BC 기원 전(BC) SELECT TO_CHAR(SYSDATE, 'BC'),
기원 후(AD) TO_CHAR(SYSDATE, 'AD')
FROM DUAL;
YYYY,YYY 년도
YY,Y
Q 분기 SELECT TO_CHAR(SYSDATE, 'YYYY'),
TO_CHAR(SYSDATE, 'YYY'),
TO_CHAR(SYSDATE, 'YY'),
TO_CHAR(SYSDATE, 'Y'),
TO_CHAR(SYSDATE, 'YYYY Q')
FROM DUAL;
MM, RM 월(로마자 월) SELECT TO_CHAR(SYSDATE, 'YYYY MM'),
TO_CHAR(SYSDATE, 'YYYY MM')
FROM DUAL;
MONTH, MON '월'글자 추가 출력 SELECT TO_CHAR(SYSDATE, 'YYYY MONTH'),
TO_CHAR(SYSDATE, 'YYYY MON')
FROM DUAL;
W,WW, IW 주차 SELECT TO_CHAR(SYSDATE, 'YYYY-MM W'),
TO_CHAR(SYSDATE, 'YYYY-MM WW'),
TO_CHAR(SYSDATE, 'YYYY-MM IW')
FROM DUAL;
DD,DDD,J 일 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD'),
TO_CHAR(SYSDATE, 'YYYY-MM-DDD'),
TO_CHAR(SYSDATE, 'YYYY-MM-J')
FROM DUAL;
D,DAY,DY 요일 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY'),
TO_CHAR(SYSDATE, 'YYYY-MM-DD DY'),
TO_CHAR(SYSDATE, 'YYYY-MM-DD D')
FROM DUAL;
AM, A.M. 오전/오후
PM, P.M. SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD AM HH24:MI:SS'),
TO_CHAR(SYSDATE, 'YYYY-MM-DD PM HH24:MI:SS')
FROM DUAL;
HH,HH12,HH24 시간
MI 분
SS,SSSSS 초 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD AM HH24:MI:SS'),
TO_CHAR(SYSDATE, 'YYYY-MM-DD PM HH24:MI:SSSSS')
FROM DUAL;
-------------------------------------------------------------------------------------------------
2) 숫자형 형식지정 문자열
----------------------------------------------------------------------
형식문자열 의미 (사용예)
----------------------------------------------------------------------
9 대응되는 자료가 유효 숫자이면 해당되는 자료 출력,
0이면 공백 출력( 단, 소숫점이하인 경우에는'0' 출력)
SELECT TO_CHAR(234, '9,999'),
TO_CHAR(234.267, '9,999.99'),
TO_CHAR(234, '999.99')
FROM DUAL;
0 대응되는 자료가 유효 숫자이면 해당되는 자료 출력,
0이면 0 출력소숫점이하인 경우에도 '0'출력
SELECT TO_CHAR(234, '0,000'),
TO_CHAR(234.267, '0,000.00'),
TO_CHAR(234, '000.99')
FROM DUAL;
PR 주어진 숫자가 음수인 경우 '< >' 안에 출력
SELECT TO_CHAR(234, '9,999PR'),
TO_CHAR(-234.267, '9,999.99PR'),
TO_CHAR(-234, '999.99PR')
FROM DUAL;
L($) 데이터 왼쪽에 화폐기호 출력
SELECT TO_CHAR(678234, 'L999,999'),
TO_CHAR(234.267, '$9,999.99'),
TO_CHAR(234000, 'L999999.99')
FROM DUAL;
, 데이터 3자리마다 ','(자리점)
. 소숫점 표현
----------------------------------------------------------------------
3. TO_DATE(data[,fmt])
- 날짜형식의 문자열 data를 기본 날짜형으로 변환
- fmt는 data가 기본 날짜형으로 자동 변환될 수 없는 편집죈 자료인 경우
해당 data의 출력(편짐)에 사용된 형식 문자열을 기술
- 날짜 타입형식문자열 TO_CHAR과 동일
사용예)
SELECT TO_DATE('20200201'),
TO_DATE('2020/02/01'),
TO_DATE('2020-02-01'),
TO_DATE('2020 02 01')
FROM DUAL;
SELECT TO_DATE('20200201 오후 1:11:11','YYYYMMDD PM HH24MISS'),
TO_DATE('2020년03월19일')
FROM DUAL;
4. TO_NUMBER(DATA[,fm])
- 숫자형식의 문자열 data를 기본 숫자형으로 변환
- fmt는 data가 기본 날짜형으로 자동 변환될 수 없는 편집죈 자료인 경우
해당 data의 출력(편짐)에 사용된 형식 문자열을 기술
- 날짜 타입형식문자열 TO_CHAR과
사용예)
SELECT TO_NUMBER('130.89'),
TO_NUMBER('-1234')
from DUAL;
SELECT TO_NUMBER('<12,567>','99,999PR'),
TO_NUMBER('123,567.00', '000,000.00'),
TO_NUMBER('₩2,300','L9,999')
FROM DUAL;