- Categories:
AS_DECIMAL , AS_NUMBER¶
Casts a VARIANT value to a fixed-point NUMBER value, with optional precision and scale. This function doesn’t cast floating-point values.
AS_DECIMAL is a synonym for AS_NUMBER.
The DECIMAL data type is synonymous with the NUMBER data type.
- See also:
Syntax¶
AS_DECIMAL( <variant_expr> [ , <precision> [ , <scale> ] ] )
AS_NUMBER( <variant_expr> [ , <precision> [ , <scale> ] ] )
Arguments¶
- variant_expr
- An expression that evaluates to a value of type VARIANT. 
- precision
- The number of significant digits of the decimal number to store. - The default is - 38.
- scale
- The number of significant digits after the decimal point. - The default is - 0.
Returns¶
The function returns a value of type NUMBER or NULL:
- If the type of the value in the - variant_exprargument is DECIMAL or NUMBER, the function returns a value of type NUMBER.
- If the type of the value in the - variant_exprargument doesn’t match the type of the output value, the function returns NULL.
- If the - variant_exprargument is NULL, the function returns NULL.
Usage notes¶
When reducing scale, this function rounds the result, which can cause out-of-range errors.
Examples¶
Create a table and load data into it:
CREATE OR REPLACE TABLE as_number_example (number1 VARIANT);
INSERT INTO as_number_example (number1)
  SELECT TO_VARIANT(TO_NUMBER(2.34, 6, 3));
Use the AS_NUMBER function in a query to cast a VARIANT value to a NUMBER value:
SELECT AS_NUMBER(number1, 6, 3) number_value
  FROM as_number_example;
+--------------+
| NUMBER_VALUE |
|--------------|
|        2.340 |
+--------------+