powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать всем элементы JSON-массива без квадратных скобок [ ]
11 сообщений из 11, страница 1 из 1
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056376
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, добрый день!
Помогите со знанием JSON path или SQL.
Есть JSON вида (количество параметров динамическое)
Код: java
1.
{"keys":["108","111","540"]}


Нужно получить значения в таком виде
Код: sql
1.
108,111,540

или
Код: sql
1.
108 111 540


При использовании
Код: sql
1.
SELECT JSON_EXTRACT('{"keys":["108","111","540"]}', '$.keys[*]')


Значения выбираются в скобках
Код: java
1.
["108", "111", "540"]


Такой вариант даёт хороший результат, но соответственно только одного значения
Код: sql
1.
SELECT JSON_UNQUOTE(JSON_EXTRACT('{"keys":["108","111","540"]}', '$.keys[0]'))


Код: java
1.
108


Есть ещё такой вариант
Код: sql
1.
REPLACE(REPLACE(REPLACE('{"keys":["108","111","540"]}','{"keys":["',''),'"]}',''),'","',' ')


Даёт то что нужно
Код: java
1.
108 111 540


Нет ли ничего зазорного в таком варианте написания? Могу ли я его использовать? Как это будет влиять на скорость выполнения запросов?

Заранее большое спаибо!
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056415
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdows
Нужно получить значения в таком виде
Вот именно в виде одного CSV-значения? или потом оно будет делиться на отдельные значения?

И точную версию MySQL укажите.

slawdows
Нет ли ничего зазорного в таком варианте написания? Могу ли я его использовать? Как это будет влиять на скорость выполнения запросов?
Нет. Да. Никак.
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056444
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо!
AkinaВот именно в виде одного CSV-значения? или потом оно будет делиться на отдельные значения?

Будет делиться, но Вы ранее мне уже подсказывали как!
AkinaИ точную версию MySQL укажите.

5.7. Точнее нужно?
AkinaНет. Да. Никак.

Ну в принципе если это приемлемый вариант, то ок.
Можно ли в таком случае использовать свою функцию, которая уберёт [ ] и "" и будет выполняться столько же по времени?
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056447
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да обработка выходного набора функциями - это быстро, в запросе основное время жрут чтение с диска, связывания и отборы.

slawdows
Можно ли в таком случае использовать свою функцию, которая уберёт [ ] и "" и будет выполняться столько же по времени?
Свою - это CREATE FUNCTION или или INSTALL COMPONENT/PLUGIN? Если первое - можно при отсутствии внутри итераций или заведомо малого их числа. Хотя во "столько же по времени" верится слабо. Второе - 100% можно.

slawdows
5.7. Точнее нужно?
Ууу... уже не нужно.
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056521
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdows
Как это будет влиять на скорость выполнения запросов?

Развели в mysql монгу думаете всё будет хорошо? Нет, всё будет плохо. Еще хуже, чем если бы у вас был eav.
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056631
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо!
Akinaв запросе основное время жрут чтение с диска, связывания и отборы.
Ускорить чтение с диска - это SSD?
Связываение - количество джойнов и их качество?
Отборы - это условаия WHERE и ON?
AkinaЕсли первое - можно при отсутствии внутри итераций или заведомо малого их числа. Хотя во "столько же по времени" верится слабо. Второе - 100% можно.
Да первое, как раз по времени она сильно проигрывает чем простое написание REPLACE(REPLACE(REPLACE(
А про второе где можно почитать?
И тут же вопрос вдогонку: Базовые (родные) функции MySQL построены таким же образом? Т.е. на примере с JSON_EXTRACT, "внутри" тоже используются REPLACE, или там что-то другое? За счёт чего они работают быстрее, чем рукописные?
Заранее спасибо!
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056634
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster, спасибо)
crutchmasterРазвели в mysql монгу думаете всё будет хорошо?
MongoDB? А что значит развели, типа то что хранятся JSON данные? На это нельзя повлять, таким образом данные хранит подключенный к приложению плагин.
crutchmasterНет, всё будет плохо. Еще хуже, чем если бы у вас был eav.
А еав это что?
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056669
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdows
Ускорить чтение с диска - это SSD?
Ну в первую голову таки оперативка и настройки использования памяти. Диск - когда от всей БД в памяти помещается от силы полпальца.

slawdows
Связываение - количество джойнов и их качество?
Плюс наличие подходящих индексов, и ещё куча всего.

slawdows
Отборы - это условаия WHERE и ON?
Ещё до кучи HAVING. Они, родимые.

slawdows
А про второе где можно почитать?
В Manual Reference, знамо дело.

slawdows
За счёт чего они работают быстрее, чем рукописные?
Пользовательские - работают практически в режиме интерпретации.

slawdows
А еав это что?
Паттерн Entity-Attribute-Value.
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056684
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, большое спасибо!
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056777
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdows
На это нельзя повлять, таким образом данные хранит подключенный к приложению плагин.

Да, вляпались вы с ним, конечно.
...
Рейтинг: 0 / 0
Выбрать всем элементы JSON-массива без квадратных скобок [ ]
    #40056833
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,
crutchmasterДа, вляпались вы с ним, конечно.
Согласен. Ну хотя бы формат данных JSON всегда одинаковый, т.е. текстовая часть всегда одна.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать всем элементы JSON-массива без квадратных скобок [ ]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]