본문 바로가기

공부 자료/SQL

[13일차] 조작함수 사용하기 part3. 데이터 정의 함수

오늘은 조작함수 중 데이터 정의 함수를 학습하는 시간입니다! 오늘도 어떤 데이터 정의 함수가 있는지 알아보러 가보겠습니다~

 

[데이터 타입의 종류]

데이터 형태 데이터 타입 종류
문자 타입  CHAR(문자열의 길이)
VARCHAR2(문자열의 길이)
숫자 NUMBER(정수 자릿수, 소수 자릿수)
날짜 DATE

 

[자동 데이터 타입 변환]

기존 데이터 자동변환 타입
VARCHAR2 / CHAR NUMBER(숫자)
VARCHAR2 / CHAR DATE(날짜)
NUMBER VARCHAR2(문자)
DATE VARCHAR2(문자)

 

[함수]

함수 명 기능 변환 예시
TO_CHAR 문자, 숫자, 날짜를 지정형식의 타입(VARCHAR2)으로 변환 숫자 >> 문자, 날짜 >> 문자
TO_NUMBER 문자를 숫자 타입으로 변환 문자 >> 숫자
TO_DATE 날짜를 나타내는 문자열을 지정 형식의 날짜 타입으로 변환 문자 >> 날짜
NVL 입력된 데이터의 NULL 값을 원하는 값으로 치환 NULL >> 특정 값

위 함수들을 각각의 함수마다 정~말 다양한 옵션이 존재한다고 하는데요? 잠깐 살펴보더라도 엄청 많더라고요,,,;;;; 오늘은 긴 학습이 될 것 같네요,,,ㅎ

처음부터 하나씩 살펴볼까요?

 

1. TO_CHAR

[날짜 및 시간 형식 지정]

설명 지정형식 사용방법 기능
세기 CC TO_CHAR(입력날짜, 'CC') 입력 날짜가 몇세기인지 반환
연도 YYYY/YYY/YY/Y TO_CHAR(입력날짜, 'YYYY') Y개수에 따라 출력 결과가 달라짐
문자로 표현된 연도 'YEAR' TO_CHAR(입력날짜, 'YEAR') 입력날짜의 연도가 문자로 출력
월 정보 추출 MM, MON TO_CHAR(입력날짜, 'MM') 입력날짜 월의 결과를 숫자, 문자로 출력
일 정보 추출 DAY, DY, DDD, DD, D TO_CHAR(입력날짜, 'DAY') 입력날짜 일의 결과를 숫자, 문자로 출력
분기 Q TO_CHAR(입력날짜, 'Q') 입력날짜의 결과를 숫자로 출력
시간형식 AM/PM/HH/HH12/HH24/MI/SS TO_CHAR(입력날짜, 'HH MI SS PM') 입력날짜의 결과를 숫자로 출력
출력결과 표현옵션(문자) "문자" 위의 날짜/시간 제어 함수들을 조합하여 원하는 형식의 날짜를 표현할 수 있음
출력결과 표현옵션(기호) /, ., -, :

TO_CHAR 함수는 위처럼 문자만을 제어하는 것이 아닌 숫자 표현도 제어가 가능합니다!

 

[숫자 표현 제어]

설명 지정형식 사용방법 기능
자리수지정 9 TO_CHAR(칼럼, '99999999') 출력 숫자포함 9의 개수만큼 공백으로 앞자리를 채워줌
자리수지정 0 TO_CHAR(칼럼, '09999999') 출력 숫자 포함 9의 개수만큼 0으로 앞자리를 채워줌
화폐 기호 $ TO_CHAR(칼럼, '$9999999') 출력 숫자 앞에 $ 표시를 해줌
화폐 기호 L TO_CHAR(칼럼, 'L9999999') 출력 숫자 앞에 \(원)표시를 해줌
소수점 . TO_CHAR(칼럼, '99999.99) 입력한 .의 위치에 소수점 표시를 해줌
쉼표 , TO_CHAR(칼럼, '9,999,999') 입력한 ,의 위치에 자리를 표시 해줌

 

2. TO_NUMBER

TO_NUMBER을 배우기 이전에 암시적 형변환에 대한 예제를 잠시 알아보겠습니다.

1. TO_NUMBER 문자를 숫자로
SELECT '123' + 100 FROM daul;
SELECT TO_NUMBER('123') + 100 FROM dual;

첫번째 문장도 오라클이 인식해서 변환하여 출력하기 때문에 둘 다 가능하지만
문자 타입을 숫자 타입으로 변환해서 출력하는 것이 좋음


2. NVL NULL 값이 존재하는 것을 원하는 값으로 변경
SELECT salary, commission_pct
	, salary + commission_pct
FROM employees;

//연산하는 값이 미지수일 경우 특정값을 알고 있더라도 null이 포함된다면 연산 출력값이 null이 됨

SELECT salary, commission_pct
	, salary + nvl(commission_pct, 0) //nvl을 사용할 경우 null 값을 0으로 치환하여 계산 후 출력
FROM employees;

SELECT salary, commission_pct
	, salary + nvl(commission_pct, 'a') //문자로도 변환이 가능함. (타입이 동일해야 가능함) >> 타입이 다르면 TO_CHAR을 이용해 타입 변환이 필요함
FROM employees;


3. TO_CHAR 문자/숫자/날짜 다루기
SELECT '2023/01/13' FROM dual;

SELECT TO_CHAR('2023/01/13', 'CC') FROM dual; //수치가 부적합함 (현재 문자열 형태이기 때문)
>> SELECT TO_CHAR(TO_DATE('2023/01/13'), 'CC') FROM dual; //TO_DATE를 사용하여 날짜 형태로 타입을 변환

 

오늘은 함수 중 앞부분에 해당하는 TO_CHAR과 TO_NUMBER에 대해서 알아봤는데요. 내일은 너무너무 당연히 알겠지만 이 다음 나머지 함수에 대해서 알아보겠죠,,? 오늘의 학습은 여기서 마무리 하도록 하겠습니다!

 

출석 인증 - 13일차