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

MySQL SEPERTI dengan json_extract

Susunan default MySQL adalah latin1_swedish_ci sebelum 8.0 dan utf8mb4_0900_ai_ci sejak 8.0 . Jadi perbandingan string non-biner tidak peka huruf besar/kecil secara default di kolom biasa.

Namun, seperti yang disebutkan dalam manual MySQL untuk tipe JSON

Oleh karena itu, nilai JSON Anda ada di utf8mb4_bin collation dan Anda perlu menerapkan collation case-insensitive ke salah satu operan untuk membuat perbandingan case-sensitive.

Mis.

WHERE username COLLATE XXX LIKE '...'

di mana XXX harus berupa susunan utf8mb4 (seperti utf8mb4_general_ci Anda sebutkan.).

Atau

WHERE username LIKE '...' COLLATE YYY

dimana YYY harus berupa susunan yang cocok dengan rangkaian karakter koneksi Anda.

Untuk perbandingan kesetaraan, Anda harus tanda kutip nilai JSON dengan JSON_UNQUOTE() atau operator ekstraksi tanda kutip ->>

Mis.

JSON_UNQUOTE(JSON_EXTRACT(payload, '$.username'))

Atau cukup

payload->>'$.username'

Jenis dan fungsi JSON bekerja dengan cara yang berbeda dari tipe data biasa. Tampaknya Anda baru mengenalnya. Jadi saya menyarankan Anda untuk membaca manual dengan seksama sebelum memasukkannya ke dalam lingkungan produksi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menghasilkan perbedaan dari plugin liquibase gradle

  2. MySQL:Dapatkan hasil pengembalian dari INSERT SELECT

  3. Bagaimana saya bisa mengembalikan data boxplot numerik dari semua hasil menggunakan 1 kueri mySQL?

  4. Menghubungkan formulir html ke halaman php sesuai dengan kunci utama

  5. MySQL tidak menggunakan indeks (Menggunakan filesort) saat menggunakan ORDER BY