Câu trả lời:
Về cơ bản, làm thế nào để sắp xếp và so sánh các chuỗi.
Ví dụ:
So sánh:
Sắp xếp
Tương đương ký tự đặc biệt
Một số SQL (SQL Server 2008+)
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')
SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
"Đối chiếu" có thể được xác định tốt nhất trên etymology.com,
cuối 14c., "hành động mang lại và so sánh,"
Nó đã không thay đổi chút nào trong 600 năm qua. "Đối chiếu" có nghĩa là "mang lại cùng nhau" và cho dù đó là thứ tự của một cuốn sách, theo trình tự thời gian hay cách khác trong cơ sở dữ liệu, tất cả đều giống nhau.
Vì nó áp dụng cho Khoa học Máy tính, những gì chúng tôi đang làm là tách cơ chế lưu trữ khỏi đơn đặt hàng . Bạn có thể đã nghe nói về ASCII-betical . Điều đó đề cập đến một so sánh dựa trên mã hóa nhị phân của các ký tự ASCII. Trong hệ thống đó, lưu trữ và đối chiếu là hai trong cùng một. Nếu "mã hóa" theo tiêu chuẩn ASCII từng thay đổi thì "đối chiếu" (thứ tự) cũng sẽ thay đổi.
POSIX bắt đầu phá vỡ điều đó với LC_COLLATE
. Nhưng khi chúng tôi chuyển sang Unicode, một tập đoàn đã xuất hiện để chuẩn hóa các bộ sưu tập: ICU.
Trong đặc tả SQL, có hai phần mở rộng để cung cấp đối chiếu,
F690
: Hỗ trợ Collation:
Bao gồm collation name
, collation clause
, collation definition
và drop collation
.
F692
: Hỗ trợ đối chiếu mở rộng,
Bao gồm đính kèm một đối chiếu mặc định khác nhau vào một cột trong lược đồ.
Về cơ bản, chúng cung cấp khả năng CREATE
và DROP
đối chiếu, để chỉ định chúng cho các toán tử và sắp xếp và để xác định mặc định cho các cột.
Để biết thêm thông tin về những gì SQL cung cấp, hãy xem,
Thay vì dán một ví dụ hạn chế, đây là bộ thử nghiệm PostgreSQL, nó khá rộng rãi. Kiểm tra ít nhất là liên kết đầu tiên và tìm kiếm'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Có lẽ không đáng để kiểm tra, nhưng tôi đã đặt nó ở đây để hoàn thành, kiểm tra POSIX nhàm chán.