Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie einen BOOL-Wert in die MySQL-Datenbank ein

TRUE und FALSE sind Schlüsselwörter und sollten nicht als Strings in Anführungszeichen gesetzt werden:

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

Indem sie als Strings zitiert werden, wandelt MySQL sie in ihr ganzzahliges Äquivalent um (da boolesche Werte eigentlich nur ein Ein-Byte-INT sind in MySQL), was für jede nicht numerische Zeichenfolge in Null übersetzt wird. Somit erhalten Sie 0 für beide Werte in Ihrer Tabelle.

Nicht-numerische Zeichenfolgen in Null umgewandelt:

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

Aber die Schlüsselwörter geben ihren entsprechenden INT zurück Darstellung:

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

Beachten Sie auch, dass ich Ihre doppelten Anführungszeichen durch einfache Anführungszeichen ersetzt habe, da es sich um Standard-SQL-String-Einschließungen handelt. Schließlich habe ich Ihre leeren Zeichenfolgen für id ersetzt mit NULL . Der leere String kann eine Warnung ausgeben.