Cuando ejecuto la siguiente sentencia:
create table ciertfalso ( valor boolean ) ;
¿Internamente de que tipo es el campo valor?
Recibe ayuda de expertos
Es gratis y fácil
Respuestas, votos y comentarios
Recibe puntos, vota y da la solución
Cuando ejecuto la siguiente sentencia:
create table ciertfalso ( valor boolean ) ;
¿Internamente de que tipo es el campo valor?
Según el manual de MySql, las palabras clave bool
y boolean
son aliases de tinyint(1)
. Este utiliza 8 bits para almacenarse. Se debe entender que, 0 es falso y cualquiera valor diferente a cero es verdadero.
Desde la versión 5.0.3 en adelante, aparece un nuevo tipo de dato que es bit
que solamente utiliza 1 bit para su almacenado. Este es el concepto más cercano a un resultado booleano que el anterior y solo se pueden almacenar el valor 0
y 1
.
Hay que tener cuidado a hora de declarar estos campos, ya que si declaras que puede ser nulos, puede tener un triple estado. Algo parecido a un checkbox grisado.
PD: Tambien hay un walk-around con declaración del tipo de dato char(0) null
que, al ser usado, el valor \0
, ''
, carácter vacío o, más técnicamente, la referencia a un valor en memoria es verdadero y null
o, técnicamente, la no referencia a un valor en memoria es falso.
El tamaño en memoria es el mismo es exactamente el mismo que el tipo de dato bit
.
Una diferencia de que este tipo de declaración es que no acepta el triple estado dada la naturaleza de la asignación del valor.