小编Mic*_*ger的帖子

当数组中的 json 对象数量未知时,如何从 mysql 文本列中提取 json 数组作为表?

有没有办法从包含具有不同数量的 json 对象的 json 数组的文本列中提取数据到表中?

例如,如果我...

CREATE TABLE tableWithJsonStr (location TEXT, jsonStr TEXT);

INSERT INTO tableWithJsonStr VALUES 
('Home', '[{"animalId":"1","type":"dog", "color":"white","isPet":"1"},{"animalId":"2","type":"cat", "color":"brown","isPet":"1"}]'),
('Farm', '[{"animalId":"8","type":"cow", "color":"brown","isPet":"0"}, {"animalId":"33","type":"pig", "color":"pink","isPet":"0"}, {"animalId":"22","type":"horse", "color":"black","isPet":"1"}]'),
('Zoo', '[{"animalId":"5","type":"tiger", "color":"stripes","isPet":"0"}]');
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE animal (
  location TEXT,
  idx INT,
  animalId INT,
  type TEXT,
  color TEXT,
  isPet BOOLEAN
);
Run Code Online (Sandbox Code Playgroud)

我可以通过运行提取 tableWithJsonStr.jsonStr:

INSERT INTO animal
SELECT location,
       idx AS id,
       TRIM(BOTH'"' FROM JSON_EXTRACT(jsonStr, CONCAT('$[', idx, '].animalId'))) AS animalId,
       TRIM(BOTH'"' FROM JSON_EXTRACT(jsonStr, CONCAT('$[', idx, '].type'))) AS type,
       TRIM(BOTH'"' FROM JSON_EXTRACT(jsonStr, CONCAT('$[', idx, …
Run Code Online (Sandbox Code Playgroud)

mysql sql arrays json extract

4
推荐指数
1
解决办法
5679
查看次数

标签 统计

arrays ×1

extract ×1

json ×1

mysql ×1

sql ×1