sql >> Database >  >> RDS >> Mysql

BOOL-waarde invoegen in MySQL-database

TRUE en FALSE zijn trefwoorden en mogen niet als tekenreeksen worden aangehaald:

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

Door ze als strings te citeren, zal MySQL ze vervolgens casten naar hun integer-equivalent (aangezien booleans in feite slechts één byte zijn INT in MySQL), wat zich vertaalt in nul voor elke niet-numerieke tekenreeks. U krijgt dus 0 voor beide waarden in uw tabel.

Niet-numerieke tekenreeksen gecast naar nul:

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

Maar de trefwoorden retourneren hun corresponderende INT vertegenwoordiging:

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

Merk ook op dat ik uw dubbele aanhalingstekens heb vervangen door enkele aanhalingstekens, net als meer standaard SQL-stringbijlagen. Tot slot heb ik je lege strings vervangen door id met NULL . De lege string kan een waarschuwing geven.




  1. Oracle PLS-00363:uitdrukking '' kan niet worden gebruikt als toewijzingsdoel

  2. Java/Mysql..SQLException:een tabel moet minimaal 1 kolom hebben SQLState:42000 VendorError:1113

  3. Retourneer het ISO-weeknummer van een datum in SQL Server (T-SQL)

  4. CodeIgniter MSSQL-verbinding