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

So sánh LIKE trên cột INT trong MySQL

Cột số không thể dùng LIKE trực tiếp. Phải ép kiểu sang chuỗi bằng CAST(cot AS CHAR) hoặc CONCAT(cot, '').

Cú pháp

SELECT cot1, cot2, ...
FROM ten_bang 
WHERE CAST(cot_so AS CHAR) LIKE '%gia_tri_so%';

Ví dụ minh họa

Tạo bảng ComparisonOnIntField:

CREATE TABLE ComparisonOnIntField (
    StudentId INT NOT NULL,
    StudentName VARCHAR(20),
    StudentAge INT
);

INSERT INTO ComparisonOnIntField VALUES
(10,'Carol',24), (12,'Bob',21), (14,'Sam',23),
(16,'Mike',25), (18,'John',27), (20,'David',26);

Tìm StudentId chứa '18'

SELECT StudentName, StudentAge 
FROM ComparisonOnIntField 
WHERE CAST(StudentId AS CHAR) LIKE '%18%';

Kết quả:

+-------------+------------+
| StudentName | StudentAge |
+-------------+------------+
| John        |         27 |
+-------------+------------+

Hiệu năng: CAST làm mất index trên cột số. Nên dùng so sánh số trực tiếp (=, BETWEEN, IN) nếu có thể. Chỉ dùng LIKE trên số khi bắt buộc (tìm pattern trong ID phức tạp, v.v.).