mariadb sql выберите отдельные значения из массива json - PullRequest
0 голосов
/ 09 января 2020

Версия базы данных mariadb 10.3.16 У меня есть JSON меток объектов: массив строк

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

["label1", "label7"]
["label2", "labeltest"]
["label1", "labeltest"]

Как мне извлечь здесь только отдельные значения?

1 Ответ

3 голосов
/ 10 января 2020

Вы можете использовать рекурсивные CTE и JSON функции для извлечения значений меток.

Вот пример запроса, который извлекает уникальные значения из JSON массивы в таблице:

WITH RECURSIVE labels AS (
  SELECT 0 AS depth, JSON_VALUE(data, CONCAT('$[', 0, ']')) AS data
    FROM t1
    WHERE JSON_LENGTH(t1.data) > 0
  UNION
  SELECT l.depth + 1, JSON_VALUE(t1.data, CONCAT('$[', l.depth + 1, ']')) AS data
    FROM t1, labels as l
    WHERE JSON_LENGTH(t1.data) - 1 > l.depth
)
SELECT data FROM labels;
...