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 |
+-------+------+------+
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 | +-------+------+-------------------+
Colonne booléenne dans les prédicats :
SELECT * FROM test_boolean WHERE NOT b AND (n < 1); +-------+---+----+ | B | N | S | |-------+---+----| | False | 0 | no | +-------+---+----+
Texte converti en booléen :
SELECT s, TO_BOOLEAN(s) FROM test_boolean; +------+---------------+ | S | TO_BOOLEAN(S) | |------+---------------| | yes | True | | no | False | | NULL | NULL | +------+---------------+
Nombre converti en booléen :
SELECT n, TO_BOOLEAN(n) FROM test_boolean; +------+---------------+ | N | TO_BOOLEAN(N) | |------+---------------| | 1 | True | | 0 | False | | NULL | NULL | +------+---------------+
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 | +----------------------+