是否可以编写输出JSON的SQL函数?

时间:2012-06-04 11:26:02

标签: php mysql sql

我只是想在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}]

可能?如果是的话,有关我如何开始的任何线索吗?

4 个答案:

答案 0 :(得分:2)

首先,查看StackOverflow上的this thread(SQL Server)。

您还可以看到here表示PL / JSON,here表示sql2json(PHP)。

答案 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开始,您可以使用typeofJSON_ARRAY以及其他函数输出JSON。

它的工作原理如下:

JSON_MERGE

您还可以拥有多个文档:

RETURN JSON_ARRAY('id':1,'name':'Molly','Age':24);

答案 3 :(得分:1)

我没有看到编写SQL来生成JSON的重点,它只是凌乱和丑陋而且很难概括为一个通用函数,并不是SQL的设计目的; SQL旨在管理,存储和检索您需要的记录,并在结果集上执行计算 - 非常快速且即时 - 而且不多。如果你需要JSON,你必须将行吐出到服务器端脚本,所以你不妨使用脚本语言来创建JSON - 这就是脚本语言的用途。