Tipo booliano - Amazon Redshift

Tipo booliano

Use o tipo de dados BOOLEAN para armazenar valores verdadeiros e falsos em uma coluna de único byte. A tabela a seguir descreve os três estados possíveis para um valor booleano e os valores de literal que resultam naquele estado. Independente da string de entrada, a coluna booleana armazena e fornece "t" para verdadeiro e "f" para falso.

State Valores válidos de literal Armazenamento
Verdadeiro TRUE 't' 'true' 'y' 'yes' '1' 1 byte
Falso FALSE 'f' 'false' 'n' 'no' '0' 1 byte
Desconhecido NULL 1 byte

É possível usar uma comparação IS para verificar um valor booleano somente como um predicado na cláusula WHERE. Não é possível usar a comparação IS com um valor booleano na lista SELECT.

Exemplos

Você pode usar uma coluna BOOLEAN para armazenar um estado "Ativo/inativo" para cada cliente em uma tabela CUSTOMER.

create table customer( custid int, active_flag boolean default true);
insert into customer values(100, default);
select * from customer; custid | active_flag -------+-------------- 100 | t

Se nenhum valor padrão (true ou false) é especificado na instrução CREATE TABLE, inserir um nome padrão significa inserir um null.

Neste exemplo, a consulta seleciona usuários da tabela USERS que gostam de esportes, mas não gostam de teatro:

select firstname, lastname, likesports, liketheatre from users where likesports is true and liketheatre is false order by userid limit 10; firstname | lastname | likesports | liketheatre ----------+------------+------------+------------- Lars | Ratliff | t | f Mufutau | Watkins | t | f Scarlett | Mayer | t | f Shafira | Glenn | t | f Winifred | Cherry | t | f Chase | Lamb | t | f Liberty | Ellison | t | f Aladdin | Haney | t | f Tashya | Michael | t | f Lucian | Montgomery | t | f (10 rows)

O exemplo a seguir seleciona usuários da tabela USERS para os quais não se sabe se eles gostam de rock:

select firstname, lastname, likerock from users where likerock is unknown order by userid limit 10; firstname | lastname | likerock ----------+----------+---------- Rafael | Taylor | Vladimir | Humphrey | Barry | Roy | Tamekah | Juarez | Mufutau | Watkins | Naida | Calderon | Anika | Huff | Bruce | Beck | Mallory | Farrell | Scarlett | Mayer | (10 rows)

O exemplo a seguir retorna um erro porque ele usa uma comparação IS na lista SELECT.

select firstname, lastname, likerock is true as "check" from users order by userid limit 10; [Amazon](500310) Invalid operation: Not implemented

O exemplo a seguir é bem-sucedido porque ele usa uma comparação igual (=) na lista SELECT em vez da comparação IS.

select firstname, lastname, likerock = true as "check" from users order by userid limit 10; firstname | lastname | check ----------+-----------+------ Rafael | Taylor | Vladimir | Humphrey | Lars | Ratliff | true Barry | Roy | Reagan | Hodge | true Victor | Hernandez | true Tamekah | Juarez | Colton | Roy | false Mufutau | Watkins | Naida | Calderon |