Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como inserir o valor BOOL no banco de dados MySQL


TRUE e FALSE são palavras-chave e não devem ser citadas como strings:
INSERT INTO first VALUES (NULL, 'G22', TRUE);
INSERT INTO first VALUES (NULL, 'G23', FALSE);

Ao citá-los como strings, o MySQL irá convertê-los para seu equivalente inteiro (já que booleanos são realmente apenas um INT de um byte no MySQL), que se traduz em zero para qualquer string não numérica. Assim, você obtém 0 para ambos os valores em sua tabela.

Strings não numéricas convertidas em zero:

mysql> SELECT CAST('TRUE' AS SIGNED), CAST('FALSE' AS SIGNED), CAST('12345' AS SIGNED);
+------------------------+-------------------------+-------------------------+
| CAST('TRUE' AS SIGNED) | CAST('FALSE' AS SIGNED) | CAST('12345' AS SIGNED) |
+------------------------+-------------------------+-------------------------+
|                      0 |                       0 |                   12345 |
+------------------------+-------------------------+-------------------------+

Mas as palavras-chave retornam seu INT correspondente representação:

mysql> SELECT TRUE, FALSE;
+------+-------+
| TRUE | FALSE |
+------+-------+
|    1 |     0 |
+------+-------+

Observe também que substituí suas aspas duplas por aspas simples, pois são mais invólucros de string SQL padrão. Por fim, substituí suas strings vazias por id com NULL . A string vazia pode emitir um aviso.