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

Co się dzieje z ciągiem pasującym do pola liczb całkowitych MySQL?

Ciąg jest zawsze konwertowany na 0 w porównaniu z wartością liczbową (oczywiście ciąg zawierający cyfrę + ciąg jest konwertowany na wartość liczbową, ale to nie jest dobra praktyka)

mysql> SELECT 'Yes' + 0;
+-----------+
| 'Yes' + 0 |
+-----------+
|         0 |
+-----------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Yes' |
+---------+------+-----------------------------------------+

Jeśli chcesz przechowywać wartość binarną (Tak/Nie lub Prawda/Fałsz) lub zestaw małych wartości, ENUM to dobry wybór. Zajmuje mało miejsca na dysku i może używać znaczącego ciągu.

mysql> CREATE TABLE enum_test(a ENUM('Yes', 'No'));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into enum_test values('Yes'), ('No'), ('Invalid');
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 1

mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 3 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)

mysql> select * from enum_test where a = 'Yes';
+------+
| a    |
+------+
| Yes  |
+------+
1 row in set (0.00 sec)

mysql> select * from enum_test where a = 'No';
+------+
| a    |
+------+
| No   |
+------+
1 row in set (0.00 sec)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL – Poczekaj kilka sekund za pomocą SELECT SLEEP()

  2. Pobieranie org.hibernate.exception.JDBCConnectionException:nie można wykonać zapytania nawet przez JNDI

  3. Hierarchia przechowywania mysql z dużymi drzewami

  4. Problem Varchar na Mysql 2147483647

  5. Jak usunąć zduplikowaną wartość oddzieloną przecinkami w jednej kolumnie w MySQL?