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;
Copy
+-------+------+------+
| 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;
Copy
+-------+------+-------------------+
| 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);
Copy
+-------+---+----+
| 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;
Copy
+------+---------------+------------------------------+
| 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;
Copy
+------+---------------+------------------------------+
| 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;
Copy
+----------------------+------------------------+
| RESULT               | TYPE_OF_RESULT         |
|----------------------+------------------------|
| Text for yes is true | VARCHAR(16777216)[LOB] |
| Text for no is false | VARCHAR(16777216)[LOB] |
| NULL                 | VARCHAR(16777216)[LOB] |
+----------------------+------------------------+