Pemeriksaan mana yang harus saya gunakan di mysql?

Himpunan karakter adalah sekumpulan simbol dan pengkodean. Dan collation adalah sekumpulan aturan untuk membandingkan dan menyortir karakter dalam kumpulan karakter. Rangkaian karakter harus berisi setidaknya 1 susunan default. Untuk MySQL 8. 0 kumpulan karakter dan susunan server MySQL default adalah utf8mb4 dan utf8mb4_0900_ai_ci, tetapi kita dapat menentukan kumpulan karakter di tingkat server, basis data, tabel, kolom, dan string literal

Semua rangkaian karakter
Semua susunan untuk rangkaian karakter.

Sekarang sedikit menyelam lebih dalam

Mysql menggunakan fungsi weight_string untuk menyortir dan membandingkan string. Fungsi ini mengembalikan string bobot untuk string input. Ia memiliki sifat-sifat ini

  • Jika = , maka str1 = str2 (str1 dan str2 dianggap sama)
  • Jika < , maka str1 < str2 (str1 mengurutkan sebelum str2)

Oke, jadi kita tahu bahwa fungsi weight_string_ digunakan untuk membandingkan, tapi apa peran collation dan charset?

Dengan latin1_general_cs

Dalam contoh di atas, kami telah mengambil token weight_string5 dan weight_string6 dan menerapkan charset latin1 dan collation latin1_general_cs. Kita dapat melihat, bahwa weight_string_7 berbeda dan antara weight_string5 dan weight_string6, weight_string5 lebih kecil. Mari kita lihat contoh lain dengan susunan yang berbeda

Dengan latin1_general_ci

Dalam contoh di atas, kami telah menggunakan susunan latin1_general_ci, dan kami dapat melihat bahwa weight_string5 dan weight_string6 memiliki bobot yang sama dan oleh karena itu keduanya sama

Mari buat 2 tabel, dengan susunan  latin1_general_ci dan latin1_general_cs. Kami telah memasukkan weight_string5 dan weight_string6 di kedua tabel

Kita sudah tahu bahwa dalam kasus latin1_general_ci, weight_string6 dan weight_string5 memiliki bobot yang sama, mari kita lihat apa yang terjadi jika kita hanya meminta weight_string6. Yah, tidak ada tanda untuk menebak dengan benar. Ini akan mendapatkan kedua baris

Dan, untuk latin1_general_cs, itu hanya akan mengambil baris dengan bobot yang sama persis. Jika kami mengambil urutan baris dengan str_field, weight_string5 akan menjadi sebelum weight_string6

WEIGHT_STRING(str20 akhiran dalam collation names artinya case-sensitive atau case-insensitive, jika Anda ingat susunan default MySql 8 adalah utf8mb4_0900_ai_ci yang artinya case-insensitive dan aksen-insensitive

SuffixArtiWEIGHT_STRING(str21Accent-insensitiveWEIGHT_STRING(str22Accent-sensitiveWEIGHT_STRING(str23Case-insensitive

Postingan terbaru

LIHAT SEMUA