Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

montano

Bool - True e false

Recommended Posts

bom dia pessoal,

 

Seguinte, estou querendo usar um campo boolean no meu BD, porem quando eu ponho BOOL ele muda para TINYINT :S.

Quero poder ler esses campos como 'true' or 'false'.

 

Alguem sabe porque ele muda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom dia pessoal,

 

Seguinte, estou querendo usar um campo boolean no meu BD, porem quando eu ponho BOOL ele muda para TINYINT :S.

Quero poder ler esses campos como 'true' or 'false'.

 

Alguem sabe porque ele muda?

 

O MySQL transforma campos bool em tinyint. Dessa forma, quando salvar um valor lógico (boolean) no banco ele automaticamente será convertido para um valor inteiro 0 (para false) ou 1 (para true).

 

Entretanto, você pode fazer consultas utilizando operador false ou true.

 

tabela usuario

nome varchar

senha varchar

ativo bool

 

select * from usuario where ativo = true

select * from usuario where ativo = 1

 

insert into usuario(nome, senha, ativo) values('nome', 'senha', true)

insert into usuario(nome, senha, ativo) values('nome', 'senha', 1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

minha preocupação é que o tinyint aceita numeros diferentes de 0 e 1 tambem.

 

De acordo com a documentação do MySQL (http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html) o tipo BOOL é um alias para TINYINT(1). Ou seja, pode ser um número inteiro que vai de -128 a 127. Para valores 0 o MySQL entende como falso e valores não-zero o MySQL entende como verdadeiro.

 

Uma outra alternativa seria o uso de tipo enum. Onde você definiria um campo ENUM('TRUE', 'FALSE') ou ENUM('0', '1'). Dessa forma o campo só aceitaria valores 'true' ou 'false'. Lembrando-se de que o campo ENUM trata seus valores como String.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.