问题描述
当前,我在数据库(mariaDB 10.3)中有一列称为数据并包含json数组:
let emitterCell = CAEmitterCell()
let emitterLayer = CAEmitterLayer()
emitterLayer.emitterCells = [emitterCell]
view.layer.addSublayer(emitterLayer)
let button = UIButton(...)
button.addTarget(self,action: #selector(doSomething),for: .touchUpInside)
view.addSubview(button)
我想把它扼杀到
client| data
1 | '["a","b","c"]'
2 | '["k"]'
解决方法
不幸的是,与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
client | value -----: | :---- 1 | a 1 | b 1 | c 2 | k