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

Cách dùng chuỗi phân cách bằng dấu phẩy trong IN() trong MySQL

Khi cột lưu chuỗi như '10,20,50', bạn có thể so sánh trực tiếp với IN('10,20,50') - nó khớp chính xác chuỗi toàn bộ, không tách thành các giá trị riêng lẻ.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable1314 (
    Number VARCHAR(100)
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1314 VALUES('45,67,89');
mysql> INSERT INTO DemoTable1314 VALUES('10,20,50');
mysql> INSERT INTO DemoTable1314 VALUES('90,56,45');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable1314;
+----------+
| Number   |
+----------+
| 45,67,89 |
| 10,20,50 |
| 90,56,45 |
+----------+

Truy vấn với IN():

mysql> SELECT * FROM DemoTable1314 WHERE Number IN('10,20,50');

Kết quả - chỉ khớp chính xác chuỗi:

+----------+
| Number   |
+----------+
| 10,20,50 |
+----------+

⚠️ Cảnh báo quan trọng: IN('10,20,50') KHÔNG tương đương IN(10, 20, 50). MySQL không tự tách chuỗi.

Giải pháp đúng nếu cần tìm các hàng chứa một số trong chuỗi:

  • Dùng FIND_IN_SET(10, Number) (chỉ hoạt động nếu không có khoảng trắng sau dấu phẩy).
  • Hoặc chuẩn hóa dữ liệu: tách thành bảng liên kết (many-to-many) hoặc dùng JSON (MySQL 5.7+).