Como representar dados booleanos no SQL Server com BIT
Representar dados booleanos no SQL Server com BIT
Não há um tipo de dados boolean específico no SQL Server. Porém, podemos usar o tipo de dados inteiros BIT para representar dados booleanos quando necessário.
Um campo que utilize o tipo BIT pode armazenar os valores 0, 1 e NULL. O valor 0 pode representar o valor lógico FALSE, enquanto o valor 1 pode representar o valor lógico TRUE. Na prática, qualquer valor numérico atribuído a um campo BIT que não seja 0 será avaliado como 1 (ou seja, TRUE).
Assim, temos os seguintes valores possíveis para um campo BIT:
- 0 = FALSE
- 1 = TRUE
- NULL
Recomenda-se que, ao usarmos o tipo BIT para representar valores lógicos, o campo seja declarado como NOT NULL, para evitar a existência de um estado indefinido para o campo em questão (“lógica de três valores”).
Este tipo de dado é muito empregado para armazenar valores do tipo sim / não, como por exemplo o status de envio de um produto, disponibilidade de um item e outras informações que sejam representadas por valores binários, ocupando muito pouco espaço de armazenamento no banco de dados.
Porém, note que o tipo BIT não é realmente equivalente a um tipo Boolean. Ele se comporta como um tipo integer, porém com o intervalo de valores possíveis restrito a 0 e 1 (e NULL, se não for usada uma restrição NOT NULL ao criar o campo). Caso um valor maior que 1 seja atribuído a um campo BIT, ele será armazenado exatamente com o valor 1, pois qualquer valor diferente de zero será interpretado como um.
Note também que, ao usarmos o tipo BIT em uma coluna, não é possível usar essa coluna em uma expressão que contenha operadores booleanos, como AND e OR.
Exemplo
Vamos criar uma tabela com um campo de bit (booleano) para armazenar a situação de uma pessoa – se ela está aposentada ou não:
CREATE TABLE StatusAP ( Cod INT PRIMARY KEY IDENTITY, Nome VARCHAR(40), Aposentado BIT NOT NULL );
Inserimos alguns dados na tabela para os testes:
INSERT INTO StatusAP VALUES ('João', 1), ('Marta', 0), ('Renan', 0), ('Fábio', 0), ('Ana', 0), ('Amélia', 1);
E então fazemos nossa primeira consulta para saber quais usuários estão aposentados:
SELECT Nome FROM StatusAP WHERE Aposentado = 1;
Resultado:
Também é possível inserir dados em um campo BIT usando as palavras-chave TRUE e FALSE, que são interpretadas respectivamente como os bits 1 e 0 pelo SQL Server. Veja o exemplo:
INSERT INTO StatusAP VALUES ('Renata', 'TRUE'), ('Monica', 'FALSE');
Verificando:
SELECT * FROM StatusAP;
Resultado:
Referências
Microsoft Docs: bit (Transact-SQL)
Escreva um comentário