sql >> Databáze >  >> RDS >> Mysql

Jak vložit hodnotu BOOL do databáze MySQL

TRUE a FALSE jsou klíčová slova a neměla by být uvozována jako řetězce:

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

Když je uvedete jako řetězce, MySQL je přetypuje na jejich celočíselný ekvivalent (protože booleany jsou ve skutečnosti jen jednobajtové INT v MySQL), což se pro jakýkoli nečíselný řetězec převádí na nulu. Získáte tak 0 pro obě hodnoty ve vaší tabulce.

Nečíselné řetězce přetypovány na nulu:

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

Ale klíčová slova vrátí odpovídající INT zastoupení:

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

Všimněte si také, že jsem vaše dvojité uvozovky nahradil jednoduchými uvozovkami, jako jsou standardnější přílohy řetězců SQL. Nakonec jsem nahradil vaše prázdné řetězce za id s NULL . Prázdný řetězec může způsobit varování.




  1. Jak vrátit seznam spouštěcích událostí na serveru SQL Server

  2. Alternativní řešení DCount a DLookup s MS SQL Server Backend

  3. Nasazení MySQL, MariaDB, Percona Server, MongoDB nebo PostgreSQL – snadné s ClusterControl

  4. Symfony:V ovladači došlo k výjimce:nelze najít ovladač s mysql