sql >> Base de Datos >  >> RDS >> Mysql

Cómo insertar valor BOOL en la base de datos MySQL

TRUE y FALSE son palabras clave y no deben citarse como cadenas:

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

Al citarlos como cadenas, MySQL los convertirá en su equivalente entero (ya que los valores booleanos son en realidad un INT de un byte). en MySQL), que se traduce en cero para cualquier cadena no numérica. Por lo tanto, obtienes 0 para ambos valores en su tabla.

Cadenas no numéricas convertidas a cero:

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

Pero las palabras clave devuelven su correspondiente INT representación:

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

Tenga en cuenta también que he reemplazado sus comillas dobles con comillas simples, ya que son recintos de cadenas SQL más estándar. Finalmente, reemplacé sus cadenas vacías por id con NULL . La cadena vacía puede emitir una advertencia.