![]() |
讲道义的小熊猫 · 第十七话下:任务达成-太极诀-漫画牛· 1 年前 · |
![]() |
胆小的山羊 · 电子烟江湖野战:电子烟赚钱不靠硬件 ...· 2 年前 · |
![]() |
不敢表白的牛肉面 · 贾斯汀·汀布莱克(Justin ...· 2 年前 · |
![]() |
旅途中的鼠标垫 · 国开2023春《形势与政策》专题测验1~5参 ...· 2 年前 · |
![]() |
傻傻的作业本 · 非职业半仙漫画免费 - 非职业半仙漫画 - ...· 2 年前 · |
当尝试在兼容
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)中执行下面的查询,它给出了下面的结果。
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
。然而,它的结果是显示与上面相同的错误。
发布于 2021-06-12 00:36:07
如果您不介意临时表和存储过程的复杂性,则此精化将创建一个临时表来连接:
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;
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;
发布于 2021-06-07 11:38:20
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json_col, CONCAT('$.people[', num, '].name'))) name
FROM ( SELECT 0 num UNION ALL
![]() |
讲道义的小熊猫 · 第十七话下:任务达成-太极诀-漫画牛 1 年前 |