Điểm chính của đối chiếu cơ sở dữ liệu là xác định cách dữ liệu được sắp xếp và so sánh.
Độ phân biệt chữ hoa chữ thường của so sánh chuỗi
SELECT "New York" = "NEW YORK";`
sẽ trả về true cho một đối chiếu không phân biệt chữ hoa chữ thường; false cho một phân biệt chữ hoa chữ thường.
Đối chiếu nào có thể được cho biết bởi _ci
và _cs
hậu tố trong tên của đối chiếu. _bin
đối chiếu thực hiện so sánh nhị phân (các chuỗi phải giống nhau 100%).
So sánh âm sắc / ký tự có dấu
đối chiếu cũng xác định xem các ký tự có dấu có được coi là đối tác cơ sở Latin của chúng trong so sánh chuỗi hay không.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
sẽ trả về true trong trường hợp cũ; sai trong cái sau. Bạn sẽ cần đọc mô tả của từng đối chiếu để tìm ra mô tả nào.
Sắp xếp chuỗi
Sự đối chiếu ảnh hưởng đến cách sắp xếp các chuỗi.
Ví dụ:
-
Umlauts
Ä Ö Ü
nằm ở cuối bảng chữ cái trong bảng chữ cái Phần Lan / Thụy Điểnlatin1_swedish_ci
-
chúng được coi là
A O U
trong phân loại DIN-1 của Đức (latin_german1_ci
) -
và dưới dạng
AE OE UE
trong phân loại DIN-2 của Đức (latin_german2_ci
). (sắp xếp "danh bạ") -
Bằng
latin1_spanish_ci
, "ñ" (n-dấu ngã) là một ký tự riêng biệt giữa "n" và "o".
Các quy tắc này sẽ dẫn đến các thứ tự sắp xếp khác nhau khi các ký tự không phải latin được sử dụng.
Sử dụng đối chiếu trong thời gian chạy
Bạn phải chọn một đối chiếu cho bảng và các cột của mình, nhưng nếu bạn không bận tâm đến hiệu suất, bạn có thể buộc các hoạt động cơ sở dữ liệu vào một đối chiếu nhất định trong thời gian chạy bằng cách sử dụng COLLATE
từ khóa.
Thao tác này sẽ sắp xếp table
theo tên name
sử dụng quy tắc sắp xếp DIN-2 của Đức:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Sử dụng COLLATE
trong thời gian chạy sẽ có ý nghĩa về hiệu suất, vì mỗi cột phải được chuyển đổi trong quá trình truy vấn. Vì vậy, hãy suy nghĩ kỹ trước khi áp dụng điều này làm tập dữ liệu lớn.
Tham khảo MySQL:
- Bộ ký tự và cụm từ mà MySQL hỗ trợ
- Ví dụ về Hiệu ứng của Sự đối chiếu
- Vấn đề đối chiếu