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

Sådan indsætter du BOOL-værdi i MySQL-databasen

TRUE og FALSE er nøgleord og bør ikke citeres som strenge:

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

Ved at citere dem som strenge, vil MySQL derefter caste dem til deres heltalsækvivalent (da booleaner i virkeligheden kun er en en-byte INT i MySQL), som oversættes til nul for enhver ikke-numerisk streng. Således får du 0 for begge værdier i din tabel.

Ikke-numeriske strenge castet til 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 |
+------------------------+-------------------------+-------------------------+

Men søgeordene returnerer deres tilsvarende INT repræsentation:

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

Bemærk også, at jeg har erstattet dine dobbelte anførselstegn med enkelte anførselstegn, ligesom mere standard SQL streng-indkapslinger. Endelig har jeg erstattet dine tomme strenge for id med NULL . Den tomme streng kan give en advarsel.




  1. Sådan opdaterer du en kolonne baseret på en anden kolonne i SQL

  2. Få minimum to værdier i SQL

  3. Tilføj en beregnet kolonne til en eksisterende tabel i SQL Server

  4. Hvordan bruger man Timestamp_to_scn og Scn_to_timestamp i Oracle?