본문 바로가기

[오라클 레퍼런스 함수] TO_BINARY_DOUBLE - double-precision 부동 소수점 숫자로 변환

by ㅇㅍㅍ 2023. 8. 28.
[오라클 레퍼런스 함수] TO_BINARY_DOUBLE - double-precision 부동 소수점 숫자로 변환
728x90

 

TO_BINARY_DOUBLE

 

구문

TO_BINARY_DOUBLE(expr [ DEFAULT return_value ON CONVERSION ERROR ]
[, fmt [, 'nlsparam' ] ])

 

목적

TO_BINARY_DOUBLEexpr을 double-precision 부동 소수점 숫자(floating-point number)로 변환합니다.

  • exprCHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 유형의 문자열, NUMBER, BINARY_FLOAT 또는 BINARY_DOUBLE 유형의 숫자 값 또는 null로 평가되는 표현식일 수 있습니다. exprBINARY_DOUBLE이면 함수는 expr을 반환합니다. expr이 null로 평가되면 함수는 null을 반환합니다. 그렇지 않으면 함수는 exprBINARY_DOUBLE 값으로 변환합니다.

  • 선택적인 DEFAULT return_value ON CONVERSION ERROR 절을 사용하여 exprBINARY_DOUBLE로 변환하는 동안 오류가 발생한 경우 이 함수에서 반환하는 값을 지정할 수 있습니다. 이 절은 expr을 평가하는 동안 오류가 발생하면 영향을 미치지 않습니다. return_value는 표현식 또는 바인드 변수 일 수 있으며 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 유형의 문자열, NUMBER, BINARY_FLOAT 또는 BINARY_DOUBLE 유형의 숫자 값 또는 null로 평가되어야 합니다. 함수는 return_valueexprBINARY_DOUBLE로 변환하는 방식과 동일한 방식으로 BINARY_DOUBLE로 변환합니다. return_valueBINARY_DOUBLE로 변환할 수 없는 경우 함수는 오류를 반환합니다.

  • 선택적인 'fmt' 및 'nlsparam' 인수는 TO_NUMBER 함수와 동일한 목적으로 사용됩니다. 이러한 인수를 지정하면 expr 및 지정된 경우 return_value는 각각 문자열 또는 null이어야 합니다. 둘 중 하나가 문자열인 경우 함수는 문자열을 BINARY_DOUBLE 값으로 변환하기 위해 fmtnlsparam 인수를 사용합니다.

 

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_numbin_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 함수 문서

 

반응형

댓글