use*_*366 2 sql arrays json mariadb unnest
目前,我的数据库(mariaDB 10.3)中有一个名为 data 的列,其中包含一个 json 数组:
client| data
1 | '["a","b","c"]'
2 | '["k"]'
Run Code Online (Sandbox Code Playgroud)
我想把它分解成
client| data
1 | "a"
1 | "b"
1 | "c"
2 | "k"
Run Code Online (Sandbox Code Playgroud)
不幸的是,与 MySQL 8.0 不同,MariaDB 不支持“取消嵌套”功能JSON_TABLE()。
我们只剩下某种迭代方法,通常是使用数字表来枚举数组元素。如果您有一个表,其行数至少与数组中的最大元素数一样多,例如bigtable,您可以执行以下操作:
select client, json_unquote(json_extract(t.data, concat('$[', n.rn - 1, ']'))) value
from mytable t
inner join (select row_number() over() rn from bigtable) n
on n.rn <= json_length(t.data)
order by t.client, n.rn
Run Code Online (Sandbox Code Playgroud)
客户| 价值
-----:| :----
1 | A
1 | 乙
1 | C
2 | k
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |