MySQL НРАВИТСЯ с json_extract - PullRequest
       20

MySQL НРАВИТСЯ с json_extract

0 голосов
/ 09 апреля 2020

У меня есть запрос MySQL, где я фильтрую по полю json:

SELECT id, username 
FROM   (SELECT id, 
               Json_extract(payload, '$.username') AS username 
        FROM   table1) AS tmp 
WHERE  username = 'userName1'; 

Возвращает 1 строку, которая выглядит следующим образом:

1, "userName1" См. кавычки, которых нет в предложении?

Что мне нужно, это сделать условие WHERE без учета регистра. Но когда я делаю

WHERE username LIKE 'userName1';

, он возвращает 0 строк. Я не понимаю, почему это работает так, предложение = работает, хотя у него нет этих двойных кавычек.

Если я сделаю

WHERE username LIKE '%userName1%';, теперь также возвращает строку , потому что %% принимает во внимание кавычки:

1, "userName1"

Но когда я делаю

WHERE username LIKE '%username1%';, он возвращает 0 строк, так что в отличие от обычного MySQL LIKE как-то чувствительно к регистру.

Что я делаю не так и как фильтровать полезную нагрузку json без учета регистра? РЕДАКТИРОВАТЬ =============================================== Предполагается, что COLLATE должен использовать здесь, но пока я не понимаю, как заставить это работать.

1 Ответ

0 голосов
/ 09 апреля 2020

Хорошо, я смог решить нечувствительность к регистру, добавив COLLATE utf8mb4_general_ci после предложения LIKE.

Таким образом, смысл в том, чтобы найти работающую сортировку, которую, в свою очередь, можно найти, изучив базу данных, с которой вы работаете.

...