Как преобразовать двумерный массив в строку с помощью sql?
Добрый день.
В столбце бд с типом text хранится массив такого вида
[
["1"],
["3", "10", "11"]
]
Как преобразовать данный массив, чтобы получилась строка 1, 3, 10, 11? Возможности использовать php или python - нет. Так же, как сделать, чтобы мы читывали и оставляли дубликаты чисел?
Дорабатывайте схему базы данных до нормализованного состояния для таких столбцов. Такой ситуации не должно возникать, когда неструктуированные данные нужно обрабатывать непроцедурными методами СУБД.
Новоселов Андрей, когда ваше большое количество данных умножится на тормознутость фильдеперсовых запросов - вы просто положите базу. Разгребайте и нормализуйте.
SELECT t1.va, t1.vv, vt.name
FROM (SELECT
technological_map, JSON_EXTRACT(rpd.technological_map, '$[0].current[*].valuation-tools') as va,
GROUP_CONCAT(REPLACE(REPLACE(json_extract(JSON_EXTRACT(rpd.technological_map, '$[0].current[*].valuation-tools'), "$[*]"), "[", ""), "]", "")) as vv
FROM `rpd` WHERE id = 1395) as t1
RIGHT JOIN spr_valuation_tools as vt
ON vt.id = (t1.vv)
И он просто выводит все данные из таблицы spr_valuation_tools. Нету пересечения никакого
Новоселов Андрей, кстати да, это json и можно просто его распарсить, как в соседнем ответе. Regexp здесь не нужен, да и сложнее с ним будет значительно.