DB/Oracle

[Oracle] Oracle Function(오라클 함수) - 형 변환 함수

EARTH_ROOPRETELCHAM 2022. 5. 7. 23:35
728x90
반응형

들어가기 전에

이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.

오라클 함수

오라클 함수란, 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어를 의미합니다. 오라클 함수는 함수를 제작한 주체를 기준으로 크게 2가지로 나뉩니다.

  • 내장 함수(built-in function): 오라클에서 기본으로 제공하고 있는 함수
    • 내장 함수는 입력 방식에 따라 데이터 처리에 사용하는 행이 나뉩니다.
    • 단일행 함수(single-row function): 데이터가 한 행씩 입력되고, 입력된 각 행별로 결과가 하나씩 나오는 함수
    • 다중행 함수(multiple-row function): 여러 행이 입력되어 하나의 행으로 결과가 반환되는 함수
  • 사용자 정의 함수(user-defined function): 사용자가 필요에 의해 직접 정의한 함수

단일행 함수와 다중행 함수(오라클로 배우는 데이터베이스 입문, 129p)

이번 시간에는 Oracle에서 제공하는 내장 함수 중 단일행 함수인 형 변환 함수에 대해 알아보도록 하겠습니다.

  • 형 변환 함수란, 지정된 자료형을 필요에 따라 바꿔주는 함수입니다.

묵시적 형 변환(Implicit Type Conversion)과 명시적 형 변환(Explicit Type Conversion)

묵시적 형 변환이란, 따로 명시적으로 형 변환을 하겠다고 나타내지 않아도 자동 형 변환이 이루어지는 것입니다.

묵시적 형 변환 잘된 예(왼쪽), 묵시적 형 변환 되지 않은 예(오른쪽)

  • 묵시적 형 변환은 Oracle이 인식 가능한 범위에서만 제대로 발생합니다(오른쪽 사진은 제대로 동작하지 않은 예).

명시적 형 변환이란, 사용자가 자료형을 직접 지정하여 형 변환을 진행하는 것입니다. 형 변환 함수의 종류는 아래와 같습니다.

종류 설명 형식
TO_CHAR 숫자 또는 날짜 데이터를 문자 데이터로 변환 TO_CHAR([날짜 데이터 또는 숫자 데이터(필수)], '[출력되길 원하는 문자 포멧(필수)]')
TO_NUMBER 문자 데이터를 숫자 데이터로 변환 TO_NUMBER('[문자열 데이터(필수)]', '[인식될 숫자 형태(필수)]')
TO_DATE 문자 데이터를 날짜 데이터로 변환 TO_DATE('[문자열 데이터(필수)]', '[인식될 날짜 형태(필수)]')

형 변환 함수를 사용하면 문자 데이터를 중심으로 숫자 또는 날짜 데이터와의 변환이 가능합니다.

형 변환 가능한 구조

형 변환 함수 사용 시 사용하는 포멧 종류

날짜 데이터 관련 포멧

년/월/일 관련 포멧(왼쪽), 시간 관련 포멧(오른쪽) (오라클로 배우는 데이터베이스 입문, 159p, 161p)

숫자 데이터 관련 포멧

숫자 데이터 관련 포멧 (오라클로 배우는 데이터베이스 입문, 162p)

TO_CHAR 사용 예시

TO_CHAR를 활용한 날짜 데이터를 문자 데이터로 변환 예(왼쪽), TO_CHAR를 활용한 숫자 데이터를 문자 데이터로 변환 예(오른쪽)

  • TO_CHAR 함수를 통해 날짜 데이터를 문자 데이터로 바꿀 때, 오전/오후 표시는 AM, PM, A.M, P.M 중 하나를 포멧에 넣으면 됩니다.
  • TO_CHAR 함수를 통해 숫자 데이터를 문자 데이터로 변환하는 방식은 자주 사용되지 않습니다.

TO_NUMBER 사용 예시

TO_NUMBER 함수 사용 예시

  • 위 예시에서 보면 '1,300'이나 '1,050'에는 쉼표(,)가 있어 해당 값이 숫자의 일부임을 인지시켜야 합니다.
  • 따라서, 포멧에 쉼표(,)가 들어간 최대 6자리 정수 또는 5자리 정수로 변환을 하여 산술 연산을 했습니다.

TO_DATE 사용 예시

TO_DATE 함수 사용 예시

참고 자료

  • 오라클로 배우는 데이터베이스 입문(이지훈 저)
728x90
반응형