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

Bagaimana saya bisa mencari berdasarkan emoji di MySQL menggunakan utf8mb4?

Anda menggunakan utf8mb4_unicode_ci untuk kolom Anda, jadi centang tidak peka huruf besar-kecil. Jika Anda menggunakan utf8mb4_bin sebagai gantinya, emoji dan diidentifikasi dengan benar sebagai huruf yang berbeda.

Dengan WEIGHT_STRING Anda bisa mendapatkan nilai yang digunakan untuk menyortir dan membandingkan string input.

Jika Anda menulis:

SELECT
  WEIGHT_STRING ('🌮' COLLATE 'utf8mb4_unicode_ci'),
  WEIGHT_STRING ('🌶' COLLATE 'utf8mb4_unicode_ci')

Kemudian Anda dapat melihat bahwa keduanya 0xfffd . Di Kumpulan Karakter Unicode mereka berkata:

Jika Anda menulis:

SELECT 
  WEIGHT_STRING('🌮' COLLATE 'utf8mb4_bin'),
  WEIGHT_STRING('🌶' COLLATE 'utf8mb4_bin')

Anda akan mendapatkan nilai unicode 0x01f32e dan 0x01f336 sebagai gantinya.

Untuk huruf lain seperti Ä , Á dan A yang sama jika Anda menggunakan utf8mb4_unicode_ci , perbedaannya bisa dilihat di:

SELECT
  WEIGHT_STRING ('Ä' COLLATE 'utf8mb4_unicode_ci'),
  WEIGHT_STRING ('A' COLLATE 'utf8mb4_unicode_ci')

Mereka memetakan ke berat 0x0E33

Ä: 00C4  ; [.0E33.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM
A: 0041  ; [.0E33.0020.0008.0041] # LATIN CAPITAL LETTER A

Menurut :Perbedaan antara utf8mb4_unicode_ci dan utf8mb4_unicode_520_ci susunan di MariaDB/MySQL? bobot yang digunakan untuk utf8mb4_unicode_ci didasarkan pada UCA 4.0.0 karena emoji tidak muncul di sana, bobot yang dipetakan adalah 0xfffd

Jika Anda memerlukan perbandingan dan pengurutan yang tidak peka huruf besar-kecil untuk huruf biasa bersama dengan emoji, maka masalah ini diselesaikan menggunakan utf8mb4_unicode_520_ci :

SELECT
  WEIGHT_STRING('🌮' COLLATE 'utf8mb4_unicode_520_ci'),
  WEIGHT_STRING('🌶' COLLATE 'utf8mb4_unicode_520_ci')

ada juga akan mendapatkan bobot yang berbeda untuk emoji itu 0xfbc3f32e dan 0xfbc3f336 .



  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:Cara tercepat untuk menghitung jumlah baris

  2. Cara Memotong Tabel di MySQL

  3. Koneksi pdo tanpa nama database?

  4. Gunakan parameter dalam fungsi yang diteruskan ke google.setOnLoadCallback();

  5. Menghubungkan MySQL dengan Visual Studio C#