У меня есть запрос 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
должен использовать здесь, но пока я не понимаю, как заставить это работать.