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

Bagaimana cara kerja MySQL tidak sensitif dan aksen tidak sensitif di UTF-8

Anda telah mencoba menggunakan susunan yang tidak peka aksen untuk penelusuran dan pemesanan Anda.

http://dev.mysql.com/doc /refman/5.0/en/charset-collation-implementations.html

Masalahnya, NAME Anda kolom tampaknya disimpan dalam set karakter latin1 (8-bit). Itu sebabnya mySQL menggerutu pada Anda seperti ini:

  COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Anda mungkin mendapatkan hasil yang Anda inginkan jika Anda mencoba

 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Tapi, hati-hati!

Saat Anda menggunakan fungsi apa pun (dalam contoh ini, CONVERT) pada kolom dalam pernyataan WHERE, Anda mengalahkan upaya MySQL untuk mengoptimalkan pencarian Anda dengan indeks. Jika proyek ini akan menjadi besar (yaitu, jika Anda akan memiliki banyak baris di tabel Anda), Anda perlu menyimpan data Anda dalam format utf8, bukan latin1. (Anda mungkin sudah tahu bahwa LIKE '%whatever%' istilah pencarian juga mengalahkan pengindeksan MySQL.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. prosedur tersimpan mysql yang menyebut dirinya secara rekursif

  2. Di MySQL:Bagaimana cara melewatkan nama tabel sebagai prosedur tersimpan dan/atau argumen fungsi?

  3. Hitung saldo dengan mysql

  4. Bagaimana cara mendapatkan id dari baris yang baru saja saya masukkan php/mysql

  5. Bagaimana Saya Memotong Kutipan Leading dan Trailing dari Baris MySQL?