Tạo bảng ID dạng chuỗi
mysql> CREATE TABLE DemoTable1390 (
-> StudentId VARCHAR(20)
-> );
Query OK, 0 rows affected (0.93 sec)
mysql> INSERT INTO DemoTable1390 VALUES
-> ('563_John'),('1001_Carol_Taylor'),('David_Miller_789'),('456_AdamSmith');
Dữ liệu
mysql> SELECT * FROM DemoTable1390;
+-------------------+
| StudentId |
+-------------------+
| 563_John |
| 1001_Carol_Taylor |
| David_Miller_789 |
| 456_AdamSmith |
+-------------------+
Truy vấn: WHERE StudentId = 456 (số)
mysql> SELECT * FROM DemoTable1390 WHERE StudentId = 456;
Kết quả: Trả về '456_AdamSmith' (có cảnh báo)
+---------------+
| StudentId |
+---------------+
| 456_AdamSmith |
+---------------+
1 row in set, 4 warnings (0.02 sec)
Cơ chế: MySQL ép kiểu ngầm (implicit casting) khi so sánh chuỗi với số: lấy phần đầu chuỗi là số (leading numeric part). '456_AdamSmith' -> 456. Chuỗi không bắt đầu bằng số (ví dụ 'David_Miller_789') ép thành 0. Cảnh báo: Truncated incorrect DOUBLE value.