Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Efek memperbarui tabel dengan baris dari utf8_turkish_ci ke utf8_general_ci?

Data kolom Anda disimpan menggunakan set karakter. Dalam hal ini sepertinya utf8.

Saat Anda mengoperasikan kolom tersebut (melakukan, misalnya, perbandingan kesetaraan atau pemesanan), MySQL menggunakan collation. Setiap kolom memiliki susunan default, yang diwarisi dari susunan default tabel.

Indeks memiliki susunan default kolom yang dimasukkan ke dalamnya sehingga dapat berfungsi secara efisien.

Anda dapat melakukan perbandingan kesetaraan yang memenuhi syarat dengan pemeriksaan. Misalnya, dalam JOIN Anda dapat menentukan

ON (turkish.village_name COLLATE utf8_general_ci) = euro.village_name

atau mungkin

ON turkish.village_name = (euro.village_name COLLATE utf8_turkish_ci)

Itu akan menghilangkan campuran koleksi ilegal Anda tanpa mengharuskan Anda mengubah tabel Anda. Ini dapat membantu Anda menghindari perubahan basis data yang Anda tanyakan. Namun berhati-hatilah, menggunakan COLLATE qualifier dapat mengalahkan penggunaan index. Jika Anda memiliki tabel besar dan Anda mengandalkan indeks untuk kinerja, ini mungkin tidak membantu.

Jadi, apa yang akan terjadi jika Anda mengubah tabel untuk mengubah susunan default?

  1. Data Anda tidak akan berubah (kecuali jika Anda juga mengubah set karakter). Itu bagus.
  2. Indeks apa pun yang melibatkan kolom dengan susunan akan dibuat ulang.
  3. Perbandingan dan urutan Anda dapat berubah. Saya tidak tahu bahasa Turki, jadi saya tidak bisa memberi tahu Anda apa yang mungkin rusak. Namun, misalnya, dalam bahasa Spanyol huruf N dan Ñ tidak sama. T datang sebelum Ñ dalam susunan Spanyol, tetapi dalam susunan umum mereka diperlakukan sama. Mungkin ada beberapa aspek alfabet Turki yang berfungsi sama, jadi ORDER BY hasilnya akan salah.

Namun, Anda dapat memperbaikinya dengan menentukan COLLATE pengubah di ORDER BY klausa.

ORDER BY (euro.village_name COLLATE utf8_turkish_ci)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Insert Select - BUKAN bidang NULL

  2. buat database menggunakan sudo mysql -u=root

  3. tujuan dari jumlah maksimal di php &mysql

  4. Permintaan MySQL dengan SUM() tidak mengembalikan hasil yang diharapkan

  5. Membuat array multi-dimensi dari kueri