Types de données logiques¶
Cette rubrique décrit les types de données logiques pris en charge dans Snowflake.
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 UNKNOWN, représentée par NULL. Les colonnes BOOLEAN peuvent être utilisées dans les expressions (par exemple, une 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 en valeur BOOLEAN¶
Snowflake prend en charge la conversion en et depuis une valeur BOOLEAN.
Conversion en valeur BOOLEAN¶
Les valeurs autres que des valeurs BOOLEAN peuvent être converties en valeurs BOOLEAN de manière explicite ou implicite.
Conversion explicite¶
Vous pouvez convertir explicitement des chaînes de texte spécifiques et des valeurs numériques en valeurs BOOLEAN à 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.
Les autres chaînes de texte ne peuvent pas être converties en valeurs BOOLEAN.
- Conversion numérique:
Zéro (
0
) est converti en FALSE.Toute valeur autre que zéro est convertie en TRUE.
Conversion implicite¶
Snowflake peut convertir implicitement des chaînes de texte spécifiques et des valeurs numériques en valeurs BOOLEAN :
- Conversion de chaînes:
'true'
est converti en TRUE.'false'
est converti en FALSE.La conversion est insensible à la casse.
- Conversion numérique:
Zéro (
0
) est converti en FALSE.Toute valeur autre que zéro est convertie en TRUE.
Conversion depuis BOOLEAN¶
Les valeurs BOOLEAN peuvent être converties en valeurs autres que des valeurs BOOLEAN de manière explicite ou implicite.
Conversion explicite¶
Vous pouvez explicitement convertir des valeurs BOOLEAN en chaînes de texte 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¶
Snowflake peut convertir implicitement des valeurs BOOLEAN en valeurs de chaînes de texte :
- Conversion de chaînes:
TRUE est converti en
'true'
.FALSE est converti en
'false'
.
Exemples¶
Créer une table et insérer des valeurs :
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 |
+-------+------+------+
La requête suivante contient une expression de type BOOLEAN :
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 |
+-------+------+-------------------+
L’exemple suivant utilise une colonne BOOLEAN dans les prédicats :
SELECT * FROM test_boolean WHERE NOT b AND (n < 1);
+-------+---+----+
| B | N | S |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
L’exemple suivant convertit une valeur de texte en valeur BOOLEAN. L’exemple utilise le SYSTEM$TYPEOF pour afficher le type de la valeur après la conversion.
SELECT s,
TO_BOOLEAN(s),
SYSTEM$TYPEOF(TO_BOOLEAN(s))
FROM test_boolean;
+------+---------------+------------------------------+
| S | TO_BOOLEAN(S) | SYSTEM$TYPEOF(TO_BOOLEAN(S)) |
|------+---------------+------------------------------|
| yes | True | BOOLEAN[SB1] |
| no | False | BOOLEAN[SB1] |
| NULL | NULL | BOOLEAN[SB1] |
+------+---------------+------------------------------+
L’exemple suivant convertit une valeur numérique en valeur BOOLEAN.
SELECT n,
TO_BOOLEAN(n),
SYSTEM$TYPEOF(TO_BOOLEAN(n))
FROM test_boolean;
+------+---------------+------------------------------+
| N | TO_BOOLEAN(N) | SYSTEM$TYPEOF(TO_BOOLEAN(N)) |
|------+---------------+------------------------------|
| 1 | True | BOOLEAN[SB1] |
| 0 | False | BOOLEAN[SB1] |
| NULL | NULL | BOOLEAN[SB1] |
+------+---------------+------------------------------+
Dans cet exemple, Snowflake convertit implicitement une valeur BOOLEAN en valeur de texte :
SELECT 'Text for ' || s || ' is ' || b AS result,
SYSTEM$TYPEOF('Text for ' || s || ' is ' || b) AS type_of_result
FROM test_boolean;
+----------------------+------------------------+
| RESULT | TYPE_OF_RESULT |
|----------------------+------------------------|
| Text for yes is true | VARCHAR(16777216)[LOB] |
| Text for no is false | VARCHAR(16777216)[LOB] |
| NULL | VARCHAR(16777216)[LOB] |
+----------------------+------------------------+