Catégories :

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

IS_DOUBLE , IS_REAL

Renvoie TRUE si son argument VARIANT contient un nombre à virgule flottante, un nombre à virgule fixe ou une valeur d’entier.

Ces fonctions sont synonymes.

Voir aussi :

IS_<type_objet> , IS_DECIMAL , IS_INTEGER

Syntaxe

IS_DOUBLE( <variant_expr> )

IS_REAL( <variant_expr> )
Copy

Arguments

variant_expr

Une expression qui correspond à une valeur de type VARIANT.

Renvoie

Renvoie une valeur BOOLEAN ou NULL.

  • Renvoie TRUE si la valeur VARIANT contient une valeur de nombre à virgule fixe, de nombre à virgule flottante ou d’entier. Sinon, renvoie FALSE.

  • Si l’entrée est NULL, renvoie NULL sans signaler d’erreur.

Exemples

Les exemples suivants utilisent la fonction IS_DOUBLE.

Utiliser la fonction IS_DOUBLE dans une clause WHERE

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              |            |
|   | }                      |            |
+---+------------------------+------------+

Afficher les valeurs de nombres à virgule fixe, de nombres à virgule flottante et d’entier dans les données en utilisant la fonction IS_DOUBLE dans une clause WHERE :

SELECT * FROM vartab WHERE IS_DOUBLE(v);
Copy
+---+-----------------------+
| N | V                     |
|---+-----------------------|
| 4 | -17                   |
| 5 | 123.12                |
| 6 | 1.912000000000000e+02 |
+---+-----------------------+

Utiliser la fonction IS_DOUBLE dans une liste SELECT

Créer et remplir la table multiple_types. L’instruction INSERT utilise la fonction TO_VARIANT pour insérer des valeurs VARIANT dans les colonnes.

CREATE OR REPLACE TABLE multiple_types (
  array1 VARIANT,
  array2 VARIANT,
  boolean1 VARIANT,
  varchar1 VARIANT,
  varchar2 VARIANT,
  decimal1 VARIANT,
  double1 VARIANT,
  integer1 VARIANT,
  object1 VARIANT);

INSERT INTO multiple_types
    (array1, array2, boolean1, varchar1, varchar2,
     decimal1, double1, integer1, object1)
  SELECT
    TO_VARIANT(TO_ARRAY('Example')),
    TO_VARIANT(ARRAY_CONSTRUCT('Array-like', 'example')),
    TO_VARIANT(TRUE),
    TO_VARIANT('X'),
    TO_VARIANT('I am a real character'),
    TO_VARIANT(1.23::DECIMAL(6, 3)),
    TO_VARIANT(3.21::DOUBLE),
    TO_VARIANT(15),
    TO_VARIANT(TO_OBJECT(PARSE_JSON('{"Tree": "Pine"}')));
Copy

Interrogez les données à l’aide de la fonction TYPEOF pour afficher les types de données des valeurs stockées dans les valeurs VARIANT.

SELECT TYPEOF(array1),
       TYPEOF(array2),
       TYPEOF(boolean1),
       TYPEOF(varchar1),
       TYPEOF(varchar2),
       TYPEOF(decimal1),
       TYPEOF(double1),
       TYPEOF(integer1),
       TYPEOF(object1)
  FROM multiple_types;
Copy
+----------------+----------------+------------------+------------------+------------------+------------------+-----------------+------------------+-----------------+
| TYPEOF(ARRAY1) | TYPEOF(ARRAY2) | TYPEOF(BOOLEAN1) | TYPEOF(VARCHAR1) | TYPEOF(VARCHAR2) | TYPEOF(DECIMAL1) | TYPEOF(DOUBLE1) | TYPEOF(INTEGER1) | TYPEOF(OBJECT1) |
|----------------+----------------+------------------+------------------+------------------+------------------+-----------------+------------------+-----------------|
| ARRAY          | ARRAY          | BOOLEAN          | VARCHAR          | VARCHAR          | DECIMAL          | DOUBLE          | INTEGER          | OBJECT          |
+----------------+----------------+------------------+------------------+------------------+------------------+-----------------+------------------+-----------------+

Afficher si une colonne contient des valeurs de nombres à virgule fixe, de nombres à virgule flottante ou d’entier dans les données en utilisant la fonction IS_DOUBLE dans une liste SELECT :

SELECT IS_DOUBLE(boolean1),
       IS_DOUBLE(decimal1),
       IS_DOUBLE(double1),
       IS_DOUBLE(integer1)
  FROM multiple_types;
Copy
+---------------------+---------------------+--------------------+---------------------+
| IS_DOUBLE(BOOLEAN1) | IS_DOUBLE(DECIMAL1) | IS_DOUBLE(DOUBLE1) | IS_DOUBLE(INTEGER1) |
|---------------------+---------------------+--------------------+---------------------|
| False               | True                | True               | True                |
+---------------------+---------------------+--------------------+---------------------+