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(134217728)[LOB] | | Text for no is false | VARCHAR(134217728)[LOB] | | NULL | VARCHAR(134217728)[LOB] | +----------------------+-------------------------+