Jawaban:
Pada dasarnya, cara mengurutkan dan membandingkan string.
Contoh:
Perbandingan:
Penyortiran:
Kesetaraan karakter khusus
Beberapa 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
"Collation" mungkin paling baik didefinisikan di etymology.com,
akhir 14c., "tindakan menyatukan dan membandingkan,"
Itu tidak berubah sama sekali dalam 600 tahun terakhir. "susun" berarti "menyatukan" dan apakah itu pemesanan buku, secara kronologis atau sebaliknya dalam database, semuanya tetap sama.
Seperti yang berlaku untuk Ilmu Komputer, yang kami lakukan adalah memisahkan mekanisme penyimpanan dari pemesanan . Anda mungkin pernah mendengar ASCII-betical . Itu mengacu pada perbandingan berdasarkan pengkodean biner dari karakter ASCII. Dalam sistem itu, penyimpanan dan pengumpulan keduanya sama. Jika "pengkodean" standar ASCII pernah mengubah " susunan " (urutan) akan berubah juga.
POSIX mulai memutuskan itu dengan LC_COLLATE
. Tetapi ketika kami pindah ke Unicode, sebuah konsorsium muncul untuk menstandarisasi koleksi juga: ICU.
Dalam spec SQL ada dua ekstensi untuk menyediakan collations,
F690
: "Dukungan pemeriksaan:
Termasuk collation name
, collation clause
, collation definition
dan drop collation
.
F692
: Dukungan pemeriksaan tambahan,
Termasuk melampirkan collation default yang berbeda ke kolom dalam skema.
Pada dasarnya ini memberikan kemampuan untuk CREATE
dan DROP
pengumpulan, untuk menentukan mereka untuk operator dan jenis, dan untuk menentukan default untuk kolom.
Untuk informasi lebih lanjut tentang apa yang ditawarkan SQL, periksa,
Daripada menempelkan contoh terbatas, berikut ini adalah test suite PostgreSQL yang cukup luas. Periksa setidaknya tautan pertama dan cari'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Mungkin tidak layak untuk dicoba, tetapi saya menempatkannya di sini untuk kelengkapan, cek POSIX yang membosankan.