MySQL muốn chuyển đổi chuỗi khi thực hiện INSERT
và SELECT
. Việc chuyển đổi là giữa những gì bạn khai báo với khách hàng có và những gì cột được khai báo là đang lưu trữ.
Cách duy nhất để tránh điều đó là sử dụng VARBINARY
và BLOB
thay vì VARCHAR
và TEXT
.
Việc sử dụng COLLATION utf8mb4_bin
không tránh chuyển đổi thành / từ CHARACTER SET utf8mb4
; nó chỉ nói rằng WHERE
và ORDER BY
nên so sánh các bit thay vì xử lý dấu và gấp chữ hoa.
Hãy nhớ rằng CHARACTER SET utf8mb4
là một cách để mã hóa văn bản; COLLATION utf8mb4_*
là các quy tắc để so sánh các văn bản trong bảng mã đó. _bin
là đơn giản.
UNIQUE
liên quan đến việc so sánh để bình đẳng, do đó COLLATION
. Trong hầu hết các đối chiếu utf8mb4, 3 (không có dấu cách) sẽ so sánh bằng nhau. utf8mb4_bin
sẽ coi cả 3 là khác nhau. utf8mb4_hungarian_ci
xử lý một =Một> öne.
Các khoảng trống ở cuối được kiểm soát bởi kiểu dữ liệu của cột (VARCHAR
hoặc khác). Phiên bản mới nhất thậm chí còn có một cài đặt liên quan đến việc có xem xét dấu cách ở cuối hay không.