Tipos de dados lógicos¶
Este tópico descreve os tipos de dados lógicos aceitos no Snowflake.
Tipos de dados¶
O Snowflake oferece suporte a um único tipo de dados lógicos (BOOLEAN).
BOOLEAN¶
BOOLEAN pode ter valores TRUE ou FALSE. BOOLEAN também pode ter um valor UNKNOWN, que é representado por NULL. As colunas BOOLEAN podem ser usadas em expressões (por exemplo, uma lista SELECT), bem como em predicados (por exemplo, uma cláusula WHERE).
O tipo de dados BOOLEAN oferece suporte para Lógica ternária.
Conversão de BOOLEAN¶
O Snowflake oferece suporte à conversão de e para BOOLEAN.
Conversão BOOLEAN¶
Valores não BOOLEAN podem ser convertidos em valores BOOLEAN de forma explícita ou implícita.
Conversão explícita¶
É possível converter explicitamente valores específicos de cadeia de caracteres de texto e numéricos para valores BOOLEAN usando as funções TO_BOOLEAN ou CAST:
- Conversão de cadeias de caracteres:
Cadeias de caracteres convertidas em TRUE:
'true'
,'t'
,'yes'
,'y'
,'on'
,'1'
.Cadeias de caracteres convertidas em FALSE:
'false'
,'f'
,'no'
,'n'
,'off'
,'0'
.A conversão não faz distinção entre maiúsculas e minúsculas.
Outras cadeias de cadeias de caracteres de texto não podem ser convertidas em valores BOOLEAN.
- Conversão numérica:
Zero (
0
) é convertido em FALSE.Qualquer valor diferente de zero é convertido em TRUE.
Conversão implícita¶
O Snowflake pode converter implicitamente valores numéricos e de cadeia de caracteres específicos em valores BOOLEAN:
- Conversão de cadeias de caracteres:
'true'
é convertido em TRUE.'false'
é convertido em FALSE.A conversão não faz distinção entre maiúsculas e minúsculas.
- Conversão numérica:
Zero (
0
) é convertido em FALSE.Qualquer valor diferente de zero é convertido em TRUE.
Conversão de BOOLEAN¶
Valores BOOLEAN podem ser convertidos em valores não BOOLEAN de forma explícita ou implícita.
Conversão explícita¶
É possível converter explicitamente os valores BOOLEAN em cadeias de caracteres de texto ou valores numéricos:
- Conversão de cadeias de caracteres:
TRUE é convertido em
'true'
.FALSE é convertido em
'false'
.
- Conversão numérica:
TRUE é convertido em
1
.FALSE é convertido em
0
.
Conversão implícita¶
O Snowflake pode converter implicitamente os valores BOOLEAN em valores de cadeia de caracteres de texto:
- Conversão de cadeias de caracteres:
TRUE é convertido em
'true'
.FALSE é convertido em
'false'
.
Exemplos¶
Criar uma tabela e inserir valores:
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 |
+-------+------+------+
A consulta a seguir inclui uma expressão do tipo 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 |
+-------+------+-------------------+
O exemplo a seguir usa uma coluna BOOLEAN em predicados:
SELECT * FROM test_boolean WHERE NOT b AND (n < 1);
+-------+---+----+
| B | N | S |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
O exemplo a seguir converte um valor de texto em um valor BOOLEAN. O exemplo usa o endereço SYSTEM$TYPEOF para mostrar o tipo do valor após a conversão.
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] |
+------+---------------+------------------------------+
O exemplo a seguir converte um valor numérico em um valor 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] |
+------+---------------+------------------------------+
Neste exemplo, o Snowflake converte implicitamente um valor BOOLEAN em um valor de texto:
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] |
+----------------------+------------------------+