set @fild='},{';selectsubstring_index(substring_index(result,',',1),':',-1) asval
,replace(substring_index(substring_index(result,',',2),':',-1),'"','') asareafrom(SELECTt1.id
,t2.num_rn
,substring_index(substring_index(t1.image_file,@fild, t2.num_rn + 1), @fild, -1) as result --列转行
FROM(SELECT
1 asid
,'[{"val":4,"area":"floor","setVal":null,"isExceed":false,"isQualified":true},{"val":11,"area":"floor","setVal":null,"isExceed":true,"isQualified":false},{"val":3,"area":"floor","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":4,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":4,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":6,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":7,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls0","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":2,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":3,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":5,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":10,"area":"walls1","setVal":null,"isExceed":true,"isQualified":false},{"val":7,"area":"walls1","setVal":null,"isExceed":false,"isQualified":true},{"val":1,"area":"walls5","setVal":null,"isExceed":false,"isQualified":true},{"val":4,"area":"walls5","setVal":null,"isExceed":false,"isQualified":true}]' asimage_file
) t1join(select 0 as num_rn union all
select 1 as num_rn union all
select 2 as num_rn union all
select 3 as num_rn union all
select 4 as num_rn union all
select 5 as num_rn union all
select 6 as num_rn union all
select 7 as num_rn union all
select 8 as num_rn union all
select 9 asnum_rn
) t2ON t2.num_rn < ((LENGTH(t1.image_file) - LENGTH(REPLACE(t1.image_file, @fild, '')))/length(@fild) + 1)order byt2.num_rn
) t3
;