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

Bagaimana saya bisa meminta teks yang berisi karakter bahasa Asia di MySQL?

Secara teori Anda bisa melakukan ini:

  1. Temukan rentang unicode yang ingin Anda uji.
  2. Mengenkode awal dan akhir secara manual ke dalam UTF-8.
  3. Gunakan byte pertama dari setiap awal dan akhir yang disandikan sebagai rentang untuk REGEXP.

Saya percaya bahwa kisaran CJK cukup jauh dari hal-hal seperti simbol euro sehingga positif palsu dan negatif palsu akan sedikit atau tidak sama sekali.

Sunting: Kami sekarang telah mempraktikkan teori!

Langkah 1: Pilih rentang karakter. saya sarankan \u3000-\u9fff; mudah untuk diuji, dan akan memberikan hasil yang hampir sempurna.

Langkah 2: Enkode ke dalam byte. (halaman Wikipedia utf-8)

Untuk rentang pilihan kami, nilai yang dikodekan utf-8 akan selalu 3 byte, yang pertama adalah 1110xxxx, di mana xxxx adalah empat bit paling signifikan dari nilai unicode.

Jadi, kita ingin membuat mach byte dalam rentang 11100011 hingga 11101001, atau 0xe3 hingga 0xe9.

Langkah 3: Jadikan regexp kami menggunakan fungsi UNHEX yang sangat berguna (dan baru saja ditemukan oleh saya).

SELECT * FROM `mydata`
WHERE `words` REGEXP CONCAT('[',UNHEX('e3'),'-',UNHEX('e9'),']')

Baru saja mencobanya. Bekerja seperti pesona. :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa kelebihan/keterbatasan masing-masing Amazon RDS vs. EC2 dengan MySQL?

  2. Glassfish tidak membuat Sumber Daya JDBC

  3. Bagaimana cara mengakses database mysql online di android?

  4. ID unik MySQL atau id gabungan

  5. SQL SELECT terbalik - Temukan staf yang tidak melakukan panggilan dingin antara rentang tanggal