gpt4 book ai didi

mySQL 5.7 使用新的 json 功能将行作为 json 返回

转载 作者:可可西里 更新时间:2023-11-01 07:05:06 24 4
gpt4 key购买 nike

我正在浏览一些新的 JSON features并且想知道是否有一种巧妙(或明显)的方法将行集作为 JSON 对象返回。理想情况下无需命名键或使用任何类型的字符串操作。

例子:

TABLE: people
id name age
1 bob 54
2 jay 32
3 john 10

SELECT * FROM people where id = 1

会回来

{"id":1,"name":"bob","age":54}

甚至更好

SELECT * FROM people

将返回所有 3 个对象的数组

如果您不熟悉 JSON 的新功能,其中一个新功能是 JSON_OBJECT

SELECT JSON_OBJECT('key1', 1, 'key2', 'abc')

将返回一个键值 JSON 对象。

最佳答案

取决于您所说的“命名键或任何类型的字符串操作”的意思。如果您乐于将键的命名和字符串操作封装在存储过程中,这样您在调用过程时就不需要命名键,那么是的,您可以:

drop procedure if exists spGetJson;
delimiter $$
create procedure spGetJson(pTableName varchar(45), pId int)
begin

select group_concat(concat("'", COLUMN_NAME, "', ", COLUMN_NAME) separator ',')
into @cols
from information_schema.columns
where TABLE_NAME = pTableName and TABLE_SCHEMA = database();

set @q = concat('select json_object(', @cols, ') from ', pTableName);
if pId is not null then
set @q = concat(@q, ' where id = ', pId);
end if;
set @q = concat(@q, ';');

prepare statement from @q;
execute statement;
deallocate prepare statement;

end $$
delimiter ;

然后您可以使用以下任一方式调用此过程:

call spGetJson('people', 1);
call spGetJson('people', null);

关于mySQL 5.7 使用新的 json 功能将行作为 json 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com