Получить выражение пути для значения внутри данных JSON с помощью поиска без учета регистра с использованием функции MySQL Json_search - PullRequest
0 голосов
/ 25 октября 2018

У меня есть требование, когда мне нужно извлечь выражение пути JSON из поиска данных JSON по значению.

Например, если у меня есть данные JSON, хранящиеся как

SET @j = '[{"name":"Kiran Muralee", "age" : 30 , "Salary" : 30000},
      {"Name":"Arun Babu", "age" : 35 , "Salary" : 60000}]';

И если мне нужно получить значение JSON Path 'Арун Бабу' , я мог бы использовать

SELECT JSON_SEARCH(@j, 'all', 'Arun Babu');

Это приводит к

"$[1].Name"

Что верно, но проблема в том, что если я ищу со значением 'arun babu' , он возвращает NULL.Поэтому для поиска без учета регистра я использовал

SELECT JSON_SEARCH(lower(@j), 'all', lower('arun babu'));

Итак, теперь я получаю результат как

"$[1].name"

Но это не нужно, потому что теперь результат также выводится в нижнем регистре, Мне нужно, чтобы результат был
"$ [1] .Name" Может кто-нибудь предложить хорошее решение или подход.

Используется версия MySQL 5.7 (версия с поддержкой JSON)

1 Ответ

0 голосов
/ 25 октября 2018

Мы можем получить ожидаемое решение, используя сортировку без учета регистра:

SELECT JSON_SEARCH(@j , 'all', 'arun babu' COLLATE utf8mb4_general_ci);

db-fiddle

...