Điều này thường xảy ra do so sánh hai chuỗi đối chiếu không tương thích hoặc do cố gắng chọn dữ liệu đối chiếu khác nhau thành một cột kết hợp.
Mệnh đề COLLATE
cho phép bạn chỉ định đối chiếu được sử dụng trong truy vấn.
Ví dụ:WHERE
sau mệnh đề sẽ luôn đưa ra lỗi bạn đã đăng:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Giải pháp của bạn là chỉ định một đối chiếu được chia sẻ cho hai cột trong truy vấn. Đây là một ví dụ sử dụng COLLATE
mệnh đề:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Một tùy chọn khác là sử dụng BINARY
nhà điều hành:
BINARY str là cách viết tắt của CAST (str AS BINARY).
Giải pháp của bạn có thể trông giống như sau:
SELECT * FROM table WHERE BINARY a = BINARY b;
hoặc,
SELECT * FROM table ORDER BY BINARY a;