Catégories :

Fonctions de données semi-structurées et structurées (prédicats de type)

IS_<type_objet>

Cette famille de fonctions sert de prédicats booléens qui peuvent être utilisés pour déterminer le type de données d’une valeur stockée dans une colonne VARIANT :

Voir aussi :

AS_<type_objet>, TYPEOF

Notes générales sur l’utilisation

  • Toutes les fonctions sont unaires, en prenant une expression VARIANT comme seul argument.

  • Toutes les fonctions renvoient FALSE si l’entrée est SQL NULL ou si l’expression VARIANT contient NULL.

Exemples

Créer et remplir la table vartab. L’instruction INSERT utilise la fonction PARSE_JSON pour insérer des valeurs VARIANT dans la colonne v de la table.

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;
Copy

Interroger les données. La requête utilise la fonction TYPEOF pour afficher les types de données des valeurs stockées dans la colonne VARIANT.

SELECT n, v, TYPEOF(v)
  FROM vartab
  ORDER BY n;
Copy
+---+------------------------+------------+
| N | V                      | TYPEOF(V)  |
|---+------------------------+------------|
| 1 | null                   | NULL_VALUE |
| 2 | NULL                   | NULL       |
| 3 | true                   | BOOLEAN    |
| 4 | -17                    | INTEGER    |
| 5 | 123.12                 | DECIMAL    |
| 6 | 1.912000000000000e+02  | DOUBLE     |
| 7 | "Om ara pa ca na dhih" | VARCHAR    |
| 8 | [                      | ARRAY      |
|   |   -1,                  |            |
|   |   12,                  |            |
|   |   289,                 |            |
|   |   2188,                |            |
|   |   false,               |            |
|   |   undefined            |            |
|   | ]                      |            |
| 9 | {                      | OBJECT     |
|   |   "x": "abc",          |            |
|   |   "y": false,          |            |
|   |   "z": 10              |            |
|   | }                      |            |
+---+------------------------+------------+

Comptez toutes les lignes de la table vartab où la colonne VARIANT v contient une valeur de chaîne :

SELECT COUNT(*) FROM vartab WHERE IS_VARCHAR(v);
Copy
+----------+
| COUNT(*) |
|----------|
|        1 |
+----------+

Sélectionnez les lignes de la table vartab dans lesquelles la colonne VARIANT v contient le type de données spécifié :

SELECT * FROM vartab WHERE IS_NULL_VALUE(v);
Copy
+---+------+
| N | V    |
|---+------|
| 1 | null |
+---+------+
SELECT * FROM vartab WHERE IS_BOOLEAN(v);
Copy
+---+------+
| N | V    |
|---+------|
| 3 | true |
+---+------+
SELECT * FROM vartab WHERE IS_INTEGER(v);
Copy
+---+-----+
| N | V   |
|---+-----|
| 4 | -17 |
+---+-----+
SELECT * FROM vartab WHERE IS_DECIMAL(v);
Copy
+---+--------+
| N | V      |
|---+--------|
| 4 | -17    |
| 5 | 123.12 |
+---+--------+
SELECT * FROM vartab WHERE IS_DOUBLE(v);
Copy
+---+-----------------------+
| N | V                     |
|---+-----------------------|
| 4 | -17                   |
| 5 | 123.12                |
| 6 | 1.912000000000000e+02 |
+---+-----------------------+
SELECT * FROM vartab WHERE IS_VARCHAR(v);
Copy
+---+------------------------+
| N | V                      |
|---+------------------------|
| 7 | "Om ara pa ca na dhih" |
+---+------------------------+
SELECT * FROM vartab WHERE IS_ARRAY(v);
Copy
+---+-------------+
| N | V           |
|---+-------------|
| 8 | [           |
|   |   -1,       |
|   |   12,       |
|   |   289,      |
|   |   2188,     |
|   |   false,    |
|   |   undefined |
|   | ]           |
+---+-------------+
SELECT * FROM vartab WHERE IS_OBJECT(v);
Copy
+---+---------------+
| N | V             |
|---+---------------|
| 9 | {             |
|   |   "x": "abc", |
|   |   "y": false, |
|   |   "z": 10     |
|   | }             |
+---+---------------+