我只是想在MySQL中编写一个函数,我可以传递一个子查询来输出该子查询的JSON表示。
我经常从MySQL获取大量数据,然后将其转换为JSON以获得API输出。在SQL服务器上写一个MySQL函数来返回JSON可能会提高速度吗?
我的想象力:
query('SELECT * FROM people');
// Output:
// +----+--------+-----+
// | id | name | Age |
// +----+--------+-----+
// | 1 | Molly | 24 |
// | 2 | Edward | 28 |
// +----+--------+-----+
query('JSON(SELECT * FROM people)');
// Output:
// [{"id":1,"name":"Molly","Age":24},{"id":2,"name":"Edward","Age":28}]
可能?如果是的话,有关我如何开始的任何线索吗?
答案 0 :(得分:2)
首先,查看StackOverflow上的this thread(SQL Server)。
答案 1 :(得分:2)
考虑一个包含用户名和电子邮件的表,您可以在MySQl用户定义函数中以下列方式构建JSON。
SELECT
CONCAT("[",
GROUP_CONCAT(
CONCAT("{username:'",username,"'"),
CONCAT(",email:'",email),"'}")
)
,"]")
AS json FROM users;
返回JSON的MySQL查询。
[
{username:'mike',email:'mike@mikesplace.com'},
{username:'jane',email:'jane@bigcompany.com'},
{username:'stan',email:'stan@stanford.com'}
]
没有内置方法将结果转换为JSON格式,因此您必须在UDF中自行完成。
答案 2 :(得分:2)
从MySQL 5.7开始,您可以使用typeof
和JSON_ARRAY
以及其他函数输出JSON。
它的工作原理如下:
JSON_MERGE
您还可以拥有多个文档:
RETURN JSON_ARRAY('id':1,'name':'Molly','Age':24);
答案 3 :(得分:1)
我没有看到编写SQL来生成JSON的重点,它只是凌乱和丑陋而且很难概括为一个通用函数,并不是SQL的设计目的; SQL旨在管理,存储和检索您需要的记录,并在结果集上执行计算 - 非常快速且即时 - 而且不多。如果你需要JSON,你必须将行吐出到服务器端脚本,所以你不妨使用脚本语言来创建JSON - 这就是脚本语言的用途。