首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在兼容Amazon的JSON_TABLE 5.7中调用MySQL ()时出错

在兼容Amazon的JSON_TABLE 5.7中调用MySQL ()时出错
EN

Stack Overflow用户
提问于 2021-05-28 11:16:35
回答 2查看 1.8K关注 0票数 1

当尝试在兼容JSON_TABLE() 5.7的MySQL Aurora中使用MySQL函数时,我会收到以下错误。

错误代码: 1064。您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法使用“@json_col”、“$.people*”列(在第1行名为VARCHAR(40) PATH‘$.na“)

Amzon文档中,它支持很多JSON函数。然而,JSON_TABLE并没有被列入其中。

我可以在Mysql 8(不是AWS Aurora)中执行下面的查询,它给出了下面的结果。

代码语言:javascript
复制
SET @json_col = '{
  "people": [
    {
      "name": "John Smith"
    },
    {
      "name": "Sally Brown"
    },
    {
      "name": "John Johnson"
    }
  ]
}';
SELECT * from JSON_TABLE(@json_col, '$.people[*]' COLUMNS (
  name VARCHAR(40)  PATH '$.name')
  ) people;

是否有任何替代方案,我可以在MySQL Aurora5.7中使用以实现上述结果。我尝试替换JSON_EXTRACT。然而,它的结果是显示与上面相同的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-12 00:36:07

如果您不介意临时表和存储过程的复杂性,则此精化将创建一个临时表来连接:

代码语言:javascript
复制
drop temporary table if exists temp_numbers;

create TEMPORARY TABLE IF NOT EXISTS temp_numbers(
    num INT
);

drop procedure if exists fill_num;

delimiter //
create procedure fill_num(in num int)
begin
    declare i int default 0;
    while (i < num) do
       insert into temp_numbers values (i);
       set i = i + 1;
    end while;
end
//
delimiter ;


SET @json_col = '{
  "people": [
    {
      "name": "John Smith"
    },
    {
      "name": "Sally Brown"
    },
    {
      "name": "John Johnson"
    }
  ]
}';

set @json_people = json_extract(@json_col,'$.people[*]');
call fill_num(json_length(@json_people));

select json_unquote(json_extract(@json_people,concat('$[',num,'].name'))) from temp_numbers;
票数 2
EN

Stack Overflow用户

发布于 2021-06-07 11:38:20

代码语言:javascript
复制
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json_col, CONCAT('$.people[', num, '].name'))) name
FROM ( SELECT 0 num UNION ALL
       SELECT 1 UNION ALL
       SELECT 2 UNION ALL
       SELECT 3 UNION ALL
       SELECT 4 UNION ALL
       SELECT 5 ) numbers
HAVING name IS NOT NULL;

https://www.db-fiddle.com/f/gP4g2gpYgEq2XtARUf3c38/0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67737833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档