Mysql
 sql >> Database >  >> RDS >> Mysql

Come inserire il valore BOOL nel database MySQL

TRUE e FALSE sono parole chiave e non devono essere citate come stringhe:

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

Citandole come stringhe, MySQL le lancerà nel loro equivalente intero (poiché i booleani sono in realtà solo un INT a un byte in MySQL), che si traduce in zero per qualsiasi stringa non numerica. Pertanto, ottieni 0 per entrambi i valori nella tabella.

Stringhe non numeriche convertite a 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 |
+------------------------+-------------------------+-------------------------+

Ma le parole chiave restituiscono il loro INT corrispondente rappresentanza:

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

Nota anche che ho sostituito le tue virgolette doppie con virgolette singole come lo sono più contenitori di stringhe SQL standard. Infine, ho sostituito le tue stringhe vuote per id con NULL . La stringa vuota potrebbe emettere un avviso.