Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL LIKE с json_extract

Подреждането по подразбиране на MySQL е latin1_swedish_ci преди 8.0 и utf8mb4_0900_ai_ci от 8.0 . Така че сравненията на недвоични низове са нечувствителни към малки и големи букви по подразбиране в обикновените колони.

Въпреки това, както е споменато в ръководството на MySQL за тип JSON

Следователно вашата JSON стойност е в utf8mb4_bin съпоставяне и трябва да приложите съпоставяне без значение за главни и малки букви към всеки от операндите, за да направите сравнението без значение за главни и малки букви.

Напр.

WHERE username COLLATE XXX LIKE '...'

където XXX трябва да бъде utf8mb4 съпоставка (като utf8mb4_general_ci сте споменали.).

Или

WHERE username LIKE '...' COLLATE YYY

където YYY трябва да бъде съпоставка, която съответства на набора от знаци на вашата връзка.

За сравнение на равенството трябва да премахнете кавички от JSON стойността с JSON_UNQUOTE() или оператора за извличане за премахване на кавички ->>

Напр.

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

Или просто

payload->>'$.username'

Типът и функциите JSON работят по различен начин от обикновените типове данни. Изглежда, че сте нов в него. Затова бих ви препоръчал да прочетете внимателно ръководството, преди да го поставите в производствена среда.



  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 SELECT Дублирани редове от OpenCarts DataBase

  2. Грешка в MySQL 5.7 (1093:Не можете да посочите целева таблица ___ за актуализация в клауза FROM) - обичайното решение не работи

  3. Записване на времева марка в mysql таблица с помощта на php

  4. MySQL - Как да съединя две таблици без дубликати?

  5. MySQL:Обединение на ляво присъединяване с дясно присъединяване