- Catégories :
Fonctions de données semi-structurées et structurées (conversion)
AS_<type_objet>¶
Cette famille de fonctions peut être utilisée pour effectuer une conversion stricte des valeurs VARIANT en d’autres types de données :
- Voir aussi :
Notes générales sur l’utilisation¶
Si le type de valeur dans l’argument VARIANT ne correspond pas à la valeur de sortie, alors la valeur NULL est renvoyée. Par exemple, si AS_DATE() reçoit une valeur VARIANT qui ne contient pas de
DATE
, alors NULL est renvoyé.Si l’entrée est NULL, la sortie est NULL.
Exemples¶
Calculez la moyenne de toutes les valeurs numériques d’une colonne de type variant dans la table vartab
:
Commencez par créer la table et y charger les données.
CREATE OR REPLACE TABLE vartab (n NUMBER(2), v VARIANT); INSERT INTO vartab SELECT column1 AS n, PARSE_JSON(column2) AS v FROM VALUES (1, 'null'), (2, null), (3, 'true'), (4, '-17'), (5, '123.12'), (6, '1.912e2'), (7, '"Om ara pa ca na dhih" '), (8, '[-1, 12, 289, 2188, false,]'), (9, '{ "x" : "abc", "y" : false, "z": 10} ') AS vals;Deuxièmement, affichez les types de données des valeurs (dont certaines sont numériques et d’autres non) :
select n, as_real(v), typeof(v) from vartab order by n; +---+------------+------------+ | N | AS_REAL(V) | TYPEOF(V) | |---+------------+------------| | 1 | NULL | NULL_VALUE | | 2 | NULL | NULL | | 3 | NULL | BOOLEAN | | 4 | -17 | INTEGER | | 5 | 123.12 | DECIMAL | | 6 | 191.2 | DOUBLE | | 7 | NULL | VARCHAR | | 8 | NULL | ARRAY | | 9 | NULL | OBJECT | +---+------------+------------+Troisièmement, calculez la moyenne de toutes les valeurs numériques à partir de la colonne
VARIANT
:select avg(as_real(v)) from vartab; +-----------------+ | AVG(AS_REAL(V)) | |-----------------| | 99.106666667 | +-----------------+