Poin utama dari pengumpulan database adalah menentukan bagaimana data diurutkan dan dibandingkan.
Sensitivitas kasus perbandingan string
SELECT "New York" = "NEW YORK";`
akan mengembalikan true untuk pemeriksaan case-sensitive; false untuk kasus yang peka huruf besar/kecil.
Pengumpulan mana yang dapat diceritakan oleh _ci
dan _cs
akhiran dalam nama collation ini. _bin
collations melakukan perbandingan biner (string harus 100% identik).
Perbandingan karakter umlaut/aksen
susunan juga menentukan apakah karakter beraksen diperlakukan sebagai rekan dasar latin mereka dalam perbandingan string.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
akan mengembalikan true dalam kasus sebelumnya; palsu pada yang terakhir. Anda perlu membaca deskripsi setiap koleksi untuk mengetahui yang mana.
Penyortiran string
Susunan memengaruhi cara string diurutkan.
Misalnya,
-
Umlauts
Ä Ö Ü
berada di akhir alfabet dalam alfabet Finlandia/Swedialatin1_swedish_ci
-
mereka diperlakukan sebagai
A O U
dalam penyortiran DIN-1 Jerman (latin_german1_ci
) -
dan sebagai
AE OE UE
dalam penyortiran DIN-2 Jerman (latin_german2_ci
). (penyortiran "buku telepon") -
Dalam
latin1_spanish_ci
, "ñ" (n-tilde) adalah huruf terpisah antara "n" dan "o".
Aturan ini akan menghasilkan urutan pengurutan yang berbeda saat karakter non-latin digunakan.
Menggunakan susunan saat runtime
Anda harus memilih susunan untuk tabel dan kolom Anda, tetapi jika Anda tidak keberatan dengan kinerja yang dicapai, Anda dapat memaksa operasi basis data ke dalam susunan tertentu saat runtime menggunakan COLLATE
kata kunci.
Ini akan mengurutkan table
dengan name
kolom menggunakan aturan penyortiran DIN-2 Jerman:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Menggunakan COLLATE
saat runtime akan memiliki implikasi kinerja, karena setiap kolom harus dikonversi selama kueri. Jadi pikirkan dua kali sebelum menerapkan ini, lakukan set data besar.
Referensi MySQL:
- Set Karakter dan Kumpulan yang Didukung MySQL
- Contoh Efek Collation
- Masalah pengumpulan