Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL LIKE với json_extract

Đối chiếu mặc định của MySQL là latin1_swedish_ci trước 8.0 utf8mb4_0900_ai_ci kể từ 8.0 . Vì vậy, so sánh chuỗi không phải nhị phân theo mặc định là không phân biệt chữ hoa chữ thường trong các cột thông thường.

Tuy nhiên, như đã đề cập trong Hướng dẫn sử dụng MySQL cho loại JSON

Do đó, giá trị JSON của bạn ở utf8mb4_bin đối chiếu và bạn cần áp dụng đối chiếu không phân biệt chữ hoa chữ thường cho một trong hai toán hạng để làm cho so sánh không phân biệt chữ hoa chữ thường.

Ví dụ:

WHERE username COLLATE XXX LIKE '...'

ở đâu XXX phải là đối chiếu utf8mb4 (chẳng hạn như utf8mb4_general_ci bạn đã đề cập.).

Hoặc

WHERE username LIKE '...' COLLATE YYY

ở đâu YYY phải là một đối chiếu phù hợp với bộ ký tự mà bạn kết nối.

Để so sánh bình đẳng, bạn nên hủy trích dẫn giá trị JSON với JSON_UNQUOTE() hoặc toán tử giải nén giải nén ->>

Ví dụ:

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

Hoặc đơn giản là

payload->>'$.username'

Kiểu và các hàm JSON hoạt động theo cách khác với các kiểu dữ liệu thông thường. Có vẻ như bạn chưa quen với nó. Vì vậy, tôi khuyên bạn nên đọc kỹ hướng dẫn sử dụng trước khi đưa nó vào môi trường sản xuất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LAST_INSERT_ID () cách hoạt động ở môi trường nhiều người dùng

  2. Làm thế nào để cố tình khóa một hàng MySQL mà ngay cả SELECT sẽ trả về một lỗi?

  3. ĐẶT HÀNG THEO id hoặc date_crated để hiển thị kết quả mới nhất?

  4. MySQL xóa tất cả khoảng trắng khỏi toàn bộ cột

  5. Phân vùng bảng cơ sở dữ liệu trong MySQL