sql >> Databasteknik >  >> RDS >> Mysql

Hur man infogar BOOL-värde i MySQL-databasen

TRUE och FALSE är nyckelord och bör inte citeras som strängar:

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

Genom att citera dem som strängar kommer MySQL sedan att casta dem till deras heltalsmotsvarighet (eftersom booleaner egentligen bara är en enbyte INT i MySQL), vilket översätts till noll för alla icke-numeriska strängar. Således får du 0 för båda värdena i din tabell.

Icke-numeriska strängar kastas till noll:

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

Men nyckelorden returnerar motsvarande INT representation:

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

Notera också att jag har ersatt dina dubbla citattecken med enkla citattecken, precis som vanligare SQL-strängar. Äntligen har jag ersatt dina tomma strängar för id med NULL . Den tomma strängen kan ge en varning.




  1. Hur UPPDATERA och VÄLJA samtidigt

  2. Hur man får SQL Server-statistikinformation med hjälp av systemstatistiska funktioner

  3. Taggningssystem:Toxilösningsfrågor

  4. hur man ansluter sql-server med JTDS-drivrutinen i Android