Oracle 데이터 타입 - 숫자

2025. 2. 21. 02:15·개발/SQL

1. NUMBER

  • 형식: NUMBER(P, S)
    • P (정밀도, Precision): 전체 유효 자릿수를 나타내며, 1부터 38까지의 정수를 사용할 수 있습니다. 소수점 앞과 뒤를 포함한 전체 자릿수.
    • S (스케일, Scale): 소수점 이하 자릿수를 나타내며, -84부터 127까지의 정수를 사용할 수 있다. 기본값은 0
  • 저장 방식: 가변 길이 형식이므로, 저장되는 바이트 수는 숫자의 크기에 따라 달라진다.

2. FLOAT

  • 설명:
    • NUMBER 데이터 유형의 하위 유형이며, 이진수 길이로 정밀도를 표현.
    • 데이터 정합성이 보장되지 않을 수 있다.
  • 사용 형식:
    • FLOAT(p) p는 정밀도.
  • 예시:
    • FLOAT(126)

3. BINARY_FLOAT

  • 설명:
    • 32비트 부동 소수점 숫자 데이터 유형.
    • 4바이트의 저장 공간을 사용.
  • 사용 형식:
    • BINARY_FLOAT
  • 예시:
    • BINARY_FLOAT

4. BINARY_DOUBLE

  • 설명:
    • 64비트 부동 소수점 숫자 데이터 유형.
    • 8바이트의 저장 공간을 사용.
  • 사용 형식:
    • BINARY_DOUBLE
  • 예시:
    • BINARY_DOUBLE

5. 정밀도(P) 및 스케일(S) 상세 설명

  • 정밀도(P)
    • 숫자의 전체 자릿수를 의미하며, 소수점 앞과 뒤의 모든 자릿수를 포함.
    • 오라클에서 정밀도는 1부터 38까지의 값을 가질 수 있으며, 이는 숫자의 유효 자릿수를 나타낸다.
  • 스케일(S)
    • 소수점 이하의 자릿수를 나타낸다.
    • 스케일은 음수 값을 가질 수도 있는데, 이 경우 소수점 왼쪽에서 반올림이 발생.
    • 예를 들어, NUMBER(5, -2)는 소수점 왼쪽 두 번째 자리에서 반올림을 수행.

6. 저장 방식 및 반올림 규칙

  • 데이터 삽입 또는 업데이트 시, 지정된 정밀도와 스케일을 초과하는 경우 오라클은 다음과 같이 처리.
    • 정밀도 초과: 오류가 발생.
    • 스케일 초과: 반올림이 수행.
    • 반올림은 가까운 값으로 수행되며, 필요한 경우 올림 또는 내림이 발생.

7. 특수한 경우 및 추가 정보

  • NUMBER(*, S): 정밀도는 시스템이 결정하고 스케일만 지정.
  • NUMBER만 선언할 경우: 최대 정밀도(38)를 사용.
  • NUMBER 자료형은 정수와 실수를 모두 저장할 수 있다.
  • 스케일(S)은 음수 값을 가질 수 있으며, 이 경우 소수점 왼쪽에서 반올림이 발생.

8. 예시

  • NUMBER(6): 6자리 정수를 저장.
  • NUMBER(8, 2): 전체 8자리, 소수점 이하 2자리를 저장.
  • NUMBER(5, 2): 123.45 (정상), 1234.56 (오류), 123.456 (123.46으로 반올림)
  • NUMBER(5, -2): 12345 (12300으로 저장), 12399 (12400으로 저장)
  • NUMBER(3, 4): 0.04567 (0.0457으로 저장), 0.004567 (0.0046으로 저장)

9. 주의사항

  • 정밀도(P)는 스케일(S)보다 크거나 같아야 한다.
  • 저장하려는 데이터의 전체 자릿수가 정밀도(P)를 초과하면 오류가 발생.
  • 데이터 삽입시 정밀도와 스케일에 맞지않는 데이터가 삽입될 경우 에러가 발생하거나 반올림 되어 저장될 수 있다.

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > SQL' 카테고리의 다른 글

Oracle 데이터 타입 - 이진데이터  (0) 2025.02.21
Oracle 데이터 타입 - 날짜  (0) 2025.02.21
Oracle 데이터 타입 - 문자열  (0) 2025.02.21
Oracle 11g XE scott계정 생성하기  (0) 2025.02.21
Oracle 권한 및 롤  (0) 2025.02.21
'개발/SQL' 카테고리의 다른 글
  • Oracle 데이터 타입 - 이진데이터
  • Oracle 데이터 타입 - 날짜
  • Oracle 데이터 타입 - 문자열
  • Oracle 11g XE scott계정 생성하기
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
Oracle 데이터 타입 - 숫자
상단으로

티스토리툴바