Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment insérer une valeur BOOL dans la base de données MySQL

TRUE et FALSE sont des mots-clés et ne doivent pas être entre guillemets sous forme de chaînes :

INSERT INTO first VALUES (NULL, 'G22', TRUE);
INSERT INTO first VALUES (NULL, 'G23', FALSE);

En les citant sous forme de chaînes, MySQL les convertira en leur équivalent entier (puisque les booléens ne sont en réalité qu'un INT d'un octet dans MySQL), qui se traduit par zéro pour toute chaîne non numérique. Ainsi, vous obtenez 0 pour les deux valeurs de votre table.

Chaînes non numériques mises à zéro :

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 |
+------------------------+-------------------------+-------------------------+

Mais les mots clés renvoient leur INT correspondant représentation :

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

Notez également que j'ai remplacé vos guillemets doubles par des guillemets simples, tout comme les boîtiers de chaînes SQL plus standard. Enfin, j'ai remplacé vos chaînes vides pour id avec NULL . La chaîne vide peut émettre un avertissement.