TO_BINARY_DOUBLE
구문
TO_BINARY_DOUBLE(expr [ DEFAULT return_value ON CONVERSION ERROR ]
[, fmt [, 'nlsparam' ] ])
목적
TO_BINARY_DOUBLE는 expr을 double-precision 부동 소수점 숫자(floating-point number)로 변환합니다.
- expr은 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 유형의 문자열, NUMBER, BINARY_FLOAT 또는 BINARY_DOUBLE 유형의 숫자 값 또는 null로 평가되는 표현식일 수 있습니다. expr이 BINARY_DOUBLE이면 함수는 expr을 반환합니다. expr이 null로 평가되면 함수는 null을 반환합니다. 그렇지 않으면 함수는 expr을 BINARY_DOUBLE 값으로 변환합니다.
- 선택적인 DEFAULT return_value ON CONVERSION ERROR 절을 사용하여 expr을 BINARY_DOUBLE로 변환하는 동안 오류가 발생한 경우 이 함수에서 반환하는 값을 지정할 수 있습니다. 이 절은 expr을 평가하는 동안 오류가 발생하면 영향을 미치지 않습니다. return_value는 표현식 또는 바인드 변수 일 수 있으며 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 유형의 문자열, NUMBER, BINARY_FLOAT 또는 BINARY_DOUBLE 유형의 숫자 값 또는 null로 평가되어야 합니다. 함수는 return_value를 expr을 BINARY_DOUBLE로 변환하는 방식과 동일한 방식으로 BINARY_DOUBLE로 변환합니다. return_value를 BINARY_DOUBLE로 변환할 수 없는 경우 함수는 오류를 반환합니다.
- 선택적인 'fmt' 및 'nlsparam' 인수는 TO_NUMBER 함수와 동일한 목적으로 사용됩니다. 이러한 인수를 지정하면 expr 및 지정된 경우 return_value는 각각 문자열 또는 null이어야 합니다. 둘 중 하나가 문자열인 경우 함수는 문자열을 BINARY_DOUBLE 값으로 변환하기 위해 fmt 및 nlsparam 인수를 사용합니다.
expr 또는 return_value가 다음과 같은 문자열인 경우 함수는 다음과 같이 변환합니다.
- 대소 문자를 구분하지 않는 문자열 'INF'는 양의 무한대로 변환됩니다.
- 대소 문자를 구분하지 않는 문자열 '-INF'는 음의 무한대로 변환됩니다.
- 대소 문자를 구분하지 않는 문자열 'NaN'은 NaN (숫자가 아님)으로 변환됩니다.
문자열 expr에서 부동 소수점 숫자 형식 요소 (F, f, D 또는 d)를 사용할 수 없습니다.
문자열 또는 NUMBER에서 BINARY_DOUBLE로의 변환은 숫자 값을 표현하기 위해 십진 정밀도를 사용하는 NUMBER 및 문자 유형을 사용하고 BINARY_DOUBLE은 이진 정밀도를 사용하기 때문에 불완전할 수 있습니다.
BINARY_FLOAT에서 BINARY_DOUBLE로의 변환은 정확합니다.
참고:
TO_CHAR (number) 및 "Floating-Point Numbers"
예제
다음 예제는 각기 다른 숫자 데이터 유형을 가진 세 개의 열을 포함하는 테이블을 기반으로 합니다:
CREATE TABLE float_point_demo
(dec_num NUMBER(10,2), bin_double BINARY_DOUBLE, bin_float BINARY_FLOAT);
INSERT INTO float_point_demo
VALUES (1234.56,1234.56,1234.56);
SELECT * FROM float_point_demo;
DEC_NUM BIN_DOUBLE BIN_FLOAT
---------- ---------- ----------
1234.56 1.235E+003 1.235E+003
다음 예제는 NUMBER 데이터 유형의 값을 BINARY_DOUBLE 데이터 유형의 값으로 변환합니다:
SELECT dec_num, TO_BINARY_DOUBLE(dec_num)
FROM float_point_demo;
DEC_NUM TO_BINARY_DOUBLE(DEC_NUM)
---------- -------------------------
1234.56 1.235E+003
다음 예제에서는 dec_num 및 bin_double 열에서 추출된 덤프 정보를 비교합니다:
SELECT DUMP(dec_num) "Decimal",
DUMP(bin_double) "Double"
FROM float_point_demo;
Decimal Double
--------------------------- ---------------------------------------------
Typ=2 Len=4: 194,13,35,57 Typ=101 Len=8: 192,147,74,61,112,163,215,10
다음 예제는 지정된 표현식을 BINARY_DOUBLE 값으로 변환할 수 없기 때문에 기본값 0을 반환합니다:
SELECT TO_BINARY_DOUBLE('2oo' DEFAULT 0 ON CONVERSION ERROR) "Value"
FROM DUAL;
Value
----------
0
출처: 오라클 레퍼런스
원문 링크: Oracle TO_BINARY_DOUBLE 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] TO_BLOB (bfile) - BFILE 값을 BLOB 값으로 변환 (0) | 2023.08.28 |
---|---|
[오라클 레퍼런스 함수] TO_BINARY_FLOAT - single-precision 부동 소수점 숫자로 변환 (0) | 2023.08.28 |
[오라클 레퍼런스 함수] TO_APPROX_PERCENTILE - 백분위수 값에 대한 근사 중간값 반환 (0) | 2023.08.27 |
[오라클 레퍼런스 함수] TO_APPROX_COUNT_DISTINCT - 근사치 고유 값 수를 NUMBER 값으로 변환 (0) | 2023.08.27 |
[오라클 레퍼런스 함수] TIMESTAMP_TO_SCN - 타임스탬프에 연관된 SCN(시스템 변경 번호) 반환 (0) | 2023.08.26 |
댓글