Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Saya tidak mengerti Collation? (Mysql, RDBMS, Kumpulan karakter)

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/Swedia latin1_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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menjalankan Fungsi di Oracle Dengan Parameter

  2. Pertanyaan Berguna tentang kedaluwarsa kata sandi oracle EBS/Kebijakan/Pengaturan

  3. SQL untuk menemukan kata-kata huruf besar dari kolom

  4. JPA - EclipseLink - Cara mengubah skema default

  5. Skema reverse engineer (oracle) ke ERD