Search

14. 형 변환 함수

이번 장에서는 수치와 날짜를 문자로 바꾸거나, 문자를 수치나 날짜로 바꾸고, 아스키 코드를 수치 코드값으로, 또는 수치를 아스키 코드로 바꾸는 실습을 한다.

14.1. TO_CHAR()

TO_CHAR() 함수는 ‘날짜’를 ‘날짜형식’의 문자로 바꾸거나 ‘수치’를 ‘수치형식’의 문자로 바꾼다.
예를 들어, “TO_CHAR(100)”의 결과는 수치 100을 문자열로 바꾼 ‘100’ 이 된다. “TO_CHAR(2020년 8월 20일, ‘YYYY-MM-DD’)” 의 결과는 2020년 8월 20일 날짜를 문자열로 바꾼 ‘2020-08-20’이다.
TO_CHAR(날짜[,날짜형식])
TO_CHAR(숫자[,숫자형식])
예제1. 2019년 8월 20일 날짜를 ‘2019-08-20’ 문자열로 바꾸고, 1234 숫자를 문자로 바꾼다.
SELECT TO_CHAR(TO_DATE('20190820'),'YYYY-MM-DD'), TO_CHAR(1234) FROM DUAL;
SQL
복사
예제2. 12.34 수치와 ‘%’ 문자를 연결해 ‘12.34%’ 문자열을 구한다.
SELECT TO_CHAR(12.34) || '%', -- 문자와 문자 연결 12.34 || '%', -- 숫자와 문자 연결 CONCAT(12.34,'%') --숫자와 문자 연결 FROM DUAL;
SQL
복사
CONCAT와 || 는 문자열을 연결하는 기능인데, 숫자가 들어오면 자동으로 문자로 바꾼다.
예제3. 수치를 천 단위로 구분하거나, 통화 기호, +/- 표시로 보인다.
SELECT TO_CHAR(123456.789,'999,999.99') AS CHAR1, -- 소수점 표현 TO_CHAR(12.34,'$999,999.99') AS CHAR2, -- 미국식 화폐 단위 표현 TO_CHAR(12.34,'L99.99') AS CHAR3, -- 한국식 화폐 단위 표현 TO_CHAR(12.34,'S99.99') AS CHAR4, -- +/- 표현 TO_CHAR(-12.34,'S99.99') AS CHAR5 FROM DUAL;
SQL
복사

14.2 TO_DATE()

TO_DATE()함수‘날짜형 문자열’을 날짜로 바꾼다. “TO_DATE(’20200820’)”의 결과는 ‘20200830’ 문자열을 날짜로 바꾼 2020년 8월 20일이다.
예제1. ‘20190820’ 문자열을 날짜로 바꿔 30일 이전, 60일 이후 날짜를 ‘YYYYMMDD’ 형식으로 보인다.
SELECT TO_CHAR(TO_DATE('20190820')-30, 'YYYYMMDD') AS "30_bf_day", '20190820' as BASE_DAY, TO_CHAR(TO_DATE('20190820')+60, 'YYYYMMDD') AS "60_aft_day" FROM DUAL;
SQL
복사

14.3 TO_NUMBER()

TO_NUMBER()함수는 ‘수치형 문자열’을 수치로 바꾼다. “TO_NUMBER(’100’)”의 결과는 문자열 ‘100’을 수치로 바꾼 100이다.
예제1. ‘123’, ‘12.45’, ‘-58.6’ 문자열을 수치로 바꾼다.
SELECT TO_NUMBER('123'), TO_NUMBER('12.45'), TO_NUMBER('-58.6') FROM DUAL;
SQL
복사
예제2. ‘12.45’ 문자열과 수치형 값 20을 더한 값을 구한다.
SELECT TO_NUMBER('12.45') + 20, '12.45' + 20 -- 비록 문자열이지만 수치와 알아서 계산이 된다. FROM DUAL;
SQL
복사
보통 결과 목록에서 문자는 왼쪽 정렬, 수치는 오른쪽 정렬을 한다.

14.4 CHR()

CHR()함수‘코드값’을 아스키 문자로 바꾼다. “CHR(65)”의 결과는 아스키 코드표에서 수치 65에 대응하는 문자 ‘A’ 를 반환한다.
예제1. 65, 66, 97, 98 수치를 아스키 문자로 바꾼다.
SELECT CHR(65), -- 'A' CHR(66), --'B' CHR(97), --'a' CHR(98) -- 'b' FROM DUAL;
SQL
복사

14.5 ASCII()

ASCII() 함수‘문자’를 코드값으로 바꾼다. “ASCII(’A’)”를 실행하면 아스키 코드표에서 문자 ‘A’에 대응하는 코드값 65를 반환한다.
예제1. ‘A’, ’B’, ‘Z’, ‘a’, ‘b’, ‘z’ 문자의 아스키 코드표 코드값을 구한다.
SELECT ASCII('A'), -- 65 ASCII('B'), --66 ASCII('Z'), --90 ASCII('a'), --97 ASCII('b'), --98 ASCII('z') --122 FROM DUAL;
SQL
복사