Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sử dụng IN() với giá trị có dấu gạch dưới (_) trong MySQL

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).