Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wstawić wartość BOOL do bazy danych MySQL?

TRUE i FALSE są słowami kluczowymi i nie powinny być cytowane jako ciągi:

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

Cytując je jako łańcuchy, MySQL rzuci je na ich odpowiednik całkowity (ponieważ wartości logiczne to tak naprawdę jednobajtowy INT w MySQL), co przekłada się na zero dla dowolnego ciągu nienumerycznego. W ten sposób otrzymujesz 0 dla obu wartości w Twojej tabeli.

Ciągi nienumeryczne rzutowane na zero:

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 słowa kluczowe zwracają odpowiadające im INT reprezentacja:

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

Zwróć też uwagę, że zastąpiłem podwójne cudzysłowy pojedynczymi cudzysłowami, podobnie jak bardziej standardowe obudowy ciągów SQL. Na koniec zamieniłem twoje puste ciągi na id z NULL . Pusty ciąg może spowodować ostrzeżenie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapytanie wybierające mysql w szeregowanej tablicy

  2. Jak użyć LOAD_FILE do załadowania pliku do obiektu BLOB MySQL?

  3. Podzapytanie ORDER BY dla konwersji GROUP BY na JOIN

  4. Jak zastąpić MySQL Perconą w Plesk CentOS 7?

  5. Jak uzyskać tylko pierwszy wiersz z zestawu wyników?