Types de données logiques

Cette rubrique décrit les types de données logiques pris en charge dans Snowflake.

Dans ce chapitre :

Types de données

Snowflake prend en charge un seul type de données logique, BOOLEAN.

BOOLEAN

BOOLEAN peut avoir des valeurs TRUE ou FALSE. BOOLEAN peut également avoir une valeur « inconnue », représentée par NULL. Les colonnes booléennes peuvent être utilisées dans les expressions (par exemple, la liste SELECT), ainsi que dans les prédicats (par exemple, la clause WHERE).

Le type de données BOOLEAN active la prise en charge de Logique ternaire.

Conversion booléenne

Conversion en booléen

Conversion explicite

Les valeurs booléennes peuvent être explicitement converties à partir de chaînes de texte et de valeurs numériques à l’aide des fonctions TO_BOOLEAN ou CAST :

Conversion de chaînes:
  • Chaînes converties en TRUE : 'true', 't', 'yes', 'y', 'on', '1'.

  • Chaînes converties en FALSE : 'false', 'f', 'no', 'n', 'off', '0'.

  • La conversion est insensible à la casse.

  • Toutes les autres chaînes de texte ne peuvent pas être converties en valeurs booléennes.

Conversion numérique:
  • Zéro (0) est converti en FALSE.

  • Toute valeur autre que zéro est convertie en TRUE.

Conversion implicite

Les valeurs booléennes peuvent être implicitement converties à partir de valeurs de chaîne de texte en valeurs booléennes.

Conversion de chaînes:
  • “true” est converti en TRUE.

  • “false” est converti en FALSE.

Les valeurs de chaîne ne sont pas sensibles à la casse.

Conversion numérique:
  • Zéro (0) est converti en FALSE.

  • Toute valeur autre que zéro est convertie en TRUE.

Conversion en booléen

Conversion explicite

Les valeurs booléennes peuvent être converties explicitement en chaînes ou en valeurs numériques.

Conversion de chaînes:
  • TRUE est converti en “true”.

  • FALSE est converti en “false”.

Conversion numérique:
  • TRUE est converti en 1.

  • FALSE est converti en 0.

Conversion implicite

Conversion de chaînes:
  • TRUE est converti en “true”.

  • FALSE est converti en “false”.

Exemples

CREATE OR REPLACE TABLE test_boolean(
   b BOOLEAN,
   n NUMBER,
   s STRING);

INSERT INTO test_boolean VALUES (true, 1, 'yes'), (false, 0, 'no'), (null, null, null);

SELECT * FROM test_boolean;

+-------+------+------+
| B     |    N | S    |
|-------+------+------|
| True  |    1 | yes  |
| False |    0 | no   |
| NULL  | NULL | NULL |
+-------+------+------+
Copy

Expression de type booléen :

SELECT b, n, NOT b AND (n < 1) FROM test_boolean;

+-------+------+-------------------+
| B     |    N | NOT B AND (N < 1) |
|-------+------+-------------------|
| True  |    1 | False             |
| False |    0 | True              |
| NULL  | NULL | NULL              |
+-------+------+-------------------+
Copy

Colonne booléenne dans les prédicats :

SELECT * FROM test_boolean WHERE NOT b AND (n < 1);

+-------+---+----+
| B     | N | S  |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
Copy

Texte converti en booléen :

SELECT s, TO_BOOLEAN(s) FROM test_boolean;

+------+---------------+
| S    | TO_BOOLEAN(S) |
|------+---------------|
| yes  | True          |
| no   | False         |
| NULL | NULL          |
+------+---------------+
Copy

Nombre converti en booléen :

SELECT n, TO_BOOLEAN(n) FROM test_boolean;

+------+---------------+
|    N | TO_BOOLEAN(N) |
|------+---------------|
|    1 | True          |
|    0 | False         |
| NULL | NULL          |
+------+---------------+
Copy

Booléen converti implicitement en texte :

SELECT 'Text for ' || s || ' is ' || b AS result FROM test_boolean;

+----------------------+
| RESULT               |
|----------------------|
| Text for yes is true |
| Text for no is false |
| NULL                 |
+----------------------+
Copy