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

Escape ký tự % trong LIKE MySQL (bên trái và giữa chuỗi)

Vấn đề

Ký tự % là wildcard trong LIKE (khớp 0 hoặc nhiều ký tự). Muốn tìm literal '%' cần escape.

Cách escape: Backslash \

Tạo bảng:

CREATE TABLE DemoTable629 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentSubject TEXT
);
INSERT INTO DemoTable629(StudentSubject) VALUES
('MySQL%'), ('Spring%Hibernate'), ('%Java');

Tìm chuỗi kết thúc bằng '%' (ký tự % ở cuối):

SELECT * FROM DemoTable629
WHERE StudentSubject LIKE '%\%';

Kết quả: Chỉ 'MySQL%'.

Các trường hợp escape

Mục tiêuPatternGiải thích
Kết thúc bằng %LIKE '%\%'% đầu = wildcard, \% = literal %
Bắt đầu bằng %LIKE '\%%'\% = literal %, % cuối = wildcard
Chứa % ở giữaLIKE '%\%%'% đầu/cuối = wildcard, \% = literal
Chuỗi chính xác '100%'LIKE '100\%'Không có wildcard

Tùy chỉnh ký tự escape

-- Dùng ký tự khác (ví dụ: |)
SELECT * FROM DemoTable629
WHERE StudentSubject LIKE '%|%' ESCAPE '|';

Lưu ý

  • Trong string literal SQL, backslash cần escape thêm: '%\\%' (đôi khi cần 4 backslash tùy client).
  • Prepared statement: Truyền pattern làm parameter → không cần escape thêm.
  • FIND_IN_SET không dùng wildcard, không cần escape %.