Catégories :

Fonctions de données semi-structurées et structurées (Conversion)

AS_DECIMAL , AS_NUMBER

Convertit une valeur VARIANT en une valeur NUMBER à virgule fixe, avec une précision et une échelle facultatives. Cette fonction ne calcule pas les valeurs à virgule flottante.

AS_DECIMAL est un synonyme de AS_NUMBER.

Le type de données DECIMAL est synonyme du type de données NUMBER.

Voir aussi :

AS_<type_objet> , AS_DOUBLE , AS_REAL , AS_INTEGER

Syntaxe

AS_DECIMAL( <variant_expr> [ , <precision> [ , <scale> ] ] )

AS_NUMBER( <variant_expr> [ , <precision> [ , <scale> ] ] )
Copy

Arguments

variant_expr

Une expression qui correspond à une valeur de type VARIANT.

precision

Nombre de chiffres significatifs du nombre décimal à stocker.

La valeur par défaut est 38.

scale

Le nombre de chiffres significatifs après le point décimal.

La valeur par défaut est 0.

Renvoie

La fonction renvoie une valeur de type NUMBER ou NULL :

  • Si le type de la valeur de l’argument variant_expr est DECIMAL ou NUMBER, la fonction renvoie une valeur de type NUMBER.

  • Si le type de la valeur de l’argument variant_expr ne correspond pas au type de la valeur de sortie, la fonction renvoie NULL.

  • Si l’argument variant_expr est NULL, la fonction renvoie NULL.

Notes sur l’utilisation

Lors de la réduction de l’échelle, cette fonction effectue un arrondi, ce qui peut entraîner des erreurs « out-of-range » (débordements de plage).

Exemples

Créer une table et y charger des données :

CREATE OR REPLACE TABLE as_number_example (number1 VARIANT);

INSERT INTO as_number_example (number1)
  SELECT TO_VARIANT(TO_NUMBER(2.34, 6, 3));
Copy

Utilisez la fonction AS_NUMBER dans une requête pour convertir une valeur VARIANT en valeur NUMBER :

SELECT AS_NUMBER(number1, 6, 3) number_value
  FROM as_number_example;
Copy
+--------------+
| NUMBER_VALUE |
|--------------|
|        2.340 |
+--------------+