mysql 解析 json格式的字段


# 創建一個存儲過程,解析某表的一個json串字段,並拆分字段存入到表
# 要解析的json串格式 :  [{"count":22,"prizeType":6,"prizeValue":11012},{"count":44,"prizeType":6,"prizeValue":21000}]
delimiter $$
use `marketcenter`$$ drop procedure if exists `p_gift_count`$$ create definer=`root`@`%` procedure `p_gift_count`() begin declare i int default 0; #內層循環,json串的列表循環 declare iid int default 0; #表記錄的主鍵id declare jsonStr varchar(255); #接收json串字段 declare flag int default 0; #游標循環結束標識 declare cur cursor for select t.`id`,t.`attr` from prize_package_template t; #定義游標 declare continue handler for not found set flag=1;#游標循環結束條件 delete from mldn.`temp_prize_template`; open cur; fetch cur into iid,jsonStr; #游標循環獲取數據並賦值 while flag<>1 do #select t.`attr`->>'$[*]' into @aa from prize_package_template t where t.id=12000; select json_length(jsonStr); set @len=json_length(jsonStr); #獲取json列表字符串的長度 set i=0; while i<@len do select json_extract(jsonStr,concat('$[',i,']')) into @res; #按順序解析 json列表元素 select i; select @res; #解析 json的具體字段 insert into mldn.`temp_prize_template` values(iid,json_extract(@res,'$.prizeValue'),json_extract(@res,'$.prizeType'),json_extract(@res,'$.count')); set i=i+1; end while; fetch cur into iid,jsonStr; end while; end$$ delimiter ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM