Можно ли сделать JSON_EXTRACT с несколькими ключами?

0

Прежде всего, я не уверен, что мой заголовок правильно объясняет этот вопрос, но я думаю, что мой код будет.

Вместо этого:

SELECT * FROM mytable WHERE JSON_EXTRACT('cars','$."65"') = 'Toyota' OR JSON_EXTRACT('cars ','$."66"') = 'Toyota' OR JSON_EXTRACT('cars ','$."67"') = 'Toyota' 

Я хочу сделать это:

SELECT * FROM mytable WHERE JSON_EXTRACT('cars',any of these 65,66,67) = 'Toyota'

Это можно сделать?

  • 0
    Укажите структуру таблицы и пример данных. Поместите ее на sqlfiddle.com . Тогда мы можем вам помочь.
  • 0
    JSON_EXTRACT(json_doc, path[, path] ...) источник dev.mysql.com/doc/refman/8.0/en/… .. Похоже, можно включить несколько путей ..
Теги:

1 ответ

1

Согласно документации, вы можете передать любое количество путей в качестве аргументов 2 в функцию JSON_EXTRACT. Таким образом, следующее должно работать:

SELECT *
FROM yourTable
WHERE JSON_UNQUOTE(JSON_EXTRACT('cars', '$."65"', '$."66"', '$."67"')) LIKE '%"Toyota"%';

демонстрация

Обратите внимание, что WHERE будет фактически возвращать строковые значения в форме ["some_value"], поэтому я сравниваю это. Кто-то, у кого больше опыта работы с MySQL JSON API, возможно, лучше, чем то, что я написал выше. Но это, по крайней мере, частично отвечает на ваш вопрос; да, вы можете извлекать несколько путей в одном вызове JSON_EXTRACT.

  • 1
    Немного удивляюсь, почему сегодня нужно снова рассказать об OP ... stackoverflow.com/q/50528364/1427878
  • 0
    @CBroe Я - часть проблемы; Я еще не проверял это ... Я сейчас настраиваю запрос.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню