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:

Usando campo booleano no SQL Server com tipo BIT

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:

Tipo BIT no SQL Server

Referências

Microsoft Docs: bit (Transact-SQL)

Sobre Fábio dos Reis (1344 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*