NUMBER 데이터 유형
NUMBER 데이터 유형은 Oracle NUMBER 데이터 유형을 사용하는 애플리케이션을 지원합니다. 이 기능은 Db2® Warehouse on Cloud 관리 서비스의 엔트리 플랜에는 적용되지 않습니다.
효과
- 정밀도 및 스케일 속성 없이 NUMBER를 지정하면 DECFLOAT(16)에 맵핑됩니다.
- NUMBER(p)를 지정하면 DECIMAL(p)에 맵핑됩니다.
- NUMBER(p,s)를 지정하면 DECIMAL(p,s)에 맵핑됩니다.
숫자 리터럴 지원은 변경되지 않습니다. 정수, 10진수 및 부동 소수점 상수에 대한 규칙은 계속 적용됩니다. 이러한 규칙은 10진수 리터럴을 31자리로 제한하고 부동 소수점 리터럴을 2진 배정밀도 부동 소수점 값의 범위로 제한합니다. 필요한 경우, CAST 스펙 또는 DECFLOAT 함수의 사용에 의한 문자열에서 DECFLOAT(34)로의 캐스트는 DECIMAL 또는 DOUBLE의 범위를 넘어 DECFLOAT(34) 범위까지의 값에 사용할 수 있습니다. 현재 D(64비트 2진 부동 소수점 값을 나타냄) 또는 F(32비트 2진 부동 소수점 값을 나타냄)로 끝나는 숫자 리터럴에 대한 지원은 없습니다. E를 포함하는 숫자 리터럴은 데이터 유형이 DOUBLE이고 캐스트 함수 REAL 또는 CAST 스펙을 사용하여 REAL로 캐스트할 수 있습니다.
CAST 스펙이나 VARCHAR 또는 CHAR 스칼라 함수를 사용하여 NUMBER 데이터 값을 문자열로 캐스트한 경우 모든 선행 영(0)이 결과에서 삭제됩니다.
CREATE SEQUENCE문의 시퀀스 값에 사용되는 기본 데이터 유형은 INTEGER가 아닌 DECIMAL(27)입니다.
DECIMAL 또는
DECFLOAT 데이터 유형을 포함하는 모든 산술 연산과 산술 또는 수학 함수는 10진수
부동 소수점 산술을 사용하여 효과적으로 수행되며 데이터 유형이 DECFLOAT(34)인
값을 리턴합니다. 이러한 유형의 동작은 두 피연산자 모두 데이터 유형이 DECIMAL 또는 DECFLOAT(16)인
산술 연산에도 적용됩니다. 이는 표현식의 산술 연산자가 있는 표현식
절에 있는 10진 산술의 설명과는
다릅니다. 또한 정수 데이터 유형(SMALLINT, INTEGER 또는 BIGINT)만 포함하는 모든 나눗셈 연산은
10진수 부동 소수점 산술을 사용하여 효과적으로 수행됩니다. 이러한 연산은 정수 데이터
유형 대신 DECFLOAT(34) 데이터 유형의 값을 리턴합니다. 정수 피연산자를 사용하여 0으로
나누면 무한이 리턴되고 오류 대신 경고가 표시됩니다.
- COALESCE
- DECODE
- GREATEST
- LEAST
- MAX(스칼라)
- MIN(스칼라)
- NVL
- VALUE
- 집합 연산(UNION, EXCEPT(MINUS) 및 INTERSECT)의 대응하는 컬럼
- IN 술어의 IN 목록에 있는 표현식 값
- 다중 행 VALUES절의 대응하는 표현식
| 소스 데이터 유형 | 대상 데이터 유형 | |||
|---|---|---|---|---|
| 정수 유형 | DECIMAL | DECFLOAT | REAL/DOUBLE | |
| 정수 유형 | 적용되지 않음 | 적용되지 않음 | decflt_rounding | round_half_even |
| DECIMAL | decflt_rounding | decflt_rounding | decflt_rounding | round_half_even |
| DECFLOAT | decflt_rounding | decflt_rounding | decflt_rounding | round_half_even |
| REAL/DOUBLE | 자르기 | decflt_rounding | decflt_rounding | round_half_even |
| 문자열(캐스트 전용) | 적용되지 않음 | decflt_rounding | decflt_rounding | round_half_even |
NUMBER 지원이 사용 가능한 데이터베이스에서 정수 입력을 사용하는 내장 함수 STDDEV, VAR, VARIANCE는 DOUBLE 대신, DECFLOAT를 리턴합니다. 결과 유형이 이 함수에 종속되는 뷰 컬럼 또는 구체화된 쿼리 테이블(MQT) 컬럼은 해당 뷰 또는 MQT가 재생성되거나 재작성될 때까지 계속해서 이전 결과 유형을 리턴합니다. MQT의 경우, 이전에 MQT로 경로지정된 쿼리는 MQT가 재작성될 때까지 더 이상 MQT로 경로지정되지 않습니다.
클라이언트-서버 호환성
NUMBER 데이터 유형이 지원되는 데이터베이스 서버와 상호 작용하는 클라이언트 애플리케이션에서는 이 서버에서 NUMBER 데이터 유형을 수신하지 않습니다. Oracle 서버에서 NUMBER를 보고하는 컬럼 또는 표현식은 데이터베이스 서버에서 DECIMAL 또는 DECFLOAT를 보고합니다.
Oracle 환경에서는 근사값 설정 모드가 반올림(round-half-up)이 될 것으로 예상하므로 클라이언트 근사값 설정 모드가 서버 근사값 설정 모드와 일치하는 것이 중요합니다. 즉, db2cli.ini 파일 설정이 decflt_rounding 데이터베이스 구성 매개변수의 값과 일치해야 합니다. Oracle 근사값 설정 모드에 가장 가깝게 하려면 데이터베이스 구성 매개변수에 ROUND_HALF_UP을 지정해야 합니다.
제한사항
- 다음 항목에 대한 지원이 없습니다.
- 31을 초과하는 정밀도 속성
- 정밀도 속성에서 별표(*) 사용
- 정밀도 속성을 초과하는 스케일 속성
- 음수 스케일 속성
- 삼각 함수 또는 DIGITS 스칼라 함수는 정밀도(DECFLOAT)가 없는 NUMBER 데이터 유형의 인수를 사용하여 호출할 수 없습니다.
- NUMBER라는 이름으로 구별 유형을 작성할 수 없습니다.