Ký tự _ (dấu gạch dưới) là ký tự đại diện (wildcard) khớp 1 ký tự bất kỳ trong LIKE, nhưng trong IN() nó là ký tự thường.
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable1363 (StudentId VARCHAR(20));
Chèn dữ liệu (có giá trị chứa _):
mysql> INSERT INTO DemoTable1363 VALUES('901'), ('702'), ('901_John_Doe'), ('1001_Carol_Taylor');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable1363;
+-------------------+ | StudentId | +-------------------+ | 901 | | 702 | | 901_John_Doe | | 1001_Carol_Taylor | +-------------------+
Truy vấn IN() với giá trị '702' và '1001':
mysql> SELECT * FROM DemoTable1363 WHERE StudentId IN('702', '1001');
Kết quả (chỉ khớp chính xác '702'):
+-----------+ | StudentId | +-----------+ | 702 | +-----------+
Giải thích:
IN('702', '1001')so sánh chuỗi toàn bộ - không phải pattern matching.- '1001_Carol_Taylor' ≠ '1001' → không khớp.
- '901_John_Doe' ≠ '901' → không khớp.
Nếu muốn tìm tiền tố: Dùng LIKE: WHERE StudentId LIKE '901\_%' (escape \_) hoặc WHERE StudentId LIKE '901\_%' (mặc định _ là wildcard, cần escape).