AS_DECIMAL, AS_NUMBER
AS_DECIMAL, AS_NUMBER
AS_DECIMAL()/AS_NUMBER() 함수는 VARIANT 값을 선택적인 정밀도(precision)와 스케일(scale)을 적용해 고정소수점 NUMBER 값으로 캐스팅해요. 이 함수는 부동소수점 값은 캐스팅하지 않아요. AS_DECIMAL은 AS_NUMBER의 동의어예요. DECIMAL 데이터 타입은 NUMBER 데이터 타입과 동의어 관계예요.
본문
문법
AS_DECIMAL( <variant_expr> [ , <precision> [ , <scale> ] ] )
AS_NUMBER( <variant_expr> [ , <precision> [ , <scale> ] ] )
인자
variant_expr — VARIANT 타입의 값으로 평가되는 표현식이에요.
precision — 저장할 십진수 값의 유효 숫자 개수예요. 기본값은 38이에요.
scale — 소수점 이하 유효 숫자 개수예요. 기본값은 0이에요.
반환
이 함수는 NUMBER 타입의 값 또는 NULL을 반환해요.
variant_expr인자의 값 타입이 DECIMAL 또는 NUMBER이면, 함수는 NUMBER 타입의 값을 반환해요.variant_expr인자의 값 타입이 출력 값 타입과 일치하지 않으면, 함수는 NULL을 반환해요.variant_expr인자가 NULL이면, 함수는 NULL을 반환해요.
사용 노트
스케일을 줄일 때 이 함수는 결과를 반올림하며, 이로 인해 범위 밖(out-of-range) 오류가 발생할 수 있어요.
예제
테이블을 만들고 데이터를 로드해요:
CREATE OR REPLACE TABLE as_number_example (number1 VARIANT);
INSERT INTO as_number_example (number1)
SELECT TO_VARIANT(TO_NUMBER(2.34, 6, 3));
쿼리에서 AS_NUMBER 함수를 사용해 VARIANT 값을 NUMBER 값으로 캐스팅해요:
SELECT AS_NUMBER(number1, 6, 3) number_value
FROM as_number_example;
+--------------+
| NUMBER_VALUE |
|--------------|
| 2.340 |
+--------------+