Почему результаты проверки вложений различаются в зависимости от регистра символов?

Почему результаты выполнения запросов различаются для функции `instr` в MySQL 8.20, используя JSON-функции и простое сравнение строк?
  • 8 июля 2024 г. 10:42
Ответы на вопрос 3
1. Результаты проверки вложений могут различаться в зависимости от регистра символов из-за специфики работы сравнения строк. Некоторые запросы или функции могут быть регистрочувствительными, что означает, что они учитывают регистр символов при сравнении строк. Если вложения содержат строки с разным регистром символов, то результаты проверки могут быть различными в зависимости от того, как установлено сравнение строк в системе.

2. Отличие результатов выполнения запросов для функции `instr` в MySQL 8.20 при использовании JSON-функций и простого сравнения строк может быть связано с тем, что JSON-функции могут обрабатывать данные и символы в JSON-формате и рассматривать их по-разному в сравнении с обычными строками. Это может привести к различным результатам при поиске подстрок в строках с использованием функции `instr`. Кроме того, различия могут быть вызваны изменениями в логике работы функции `instr` в новых версиях MySQL.
решил через COLLATE 
select instr(json_unquote(json_extract('{"name": "Gamma Electronics"}','$.name')) COLLATE utf8mb4_0900_ai_ci, 'ga')


Спасибо всем. Снимаю вопрос
Еще явное приведение к типу char работает: 
select instr(convert(json_unquote(json_extract('{"name": "Gamma Electronics"}','$.name')), char), 'ga')
Похожие вопросы