将group_concat数据作为数组返回

Bra*_*rad 14 php mysql

我想使用group_concat作为数据数组返回从db检索的值.是否可以在mysql查询中执行此操作?或者我是否需要将数据分解为数组?

GROUP_CONCAT(sh.hold_id) as holds
Run Code Online (Sandbox Code Playgroud)

返回此

[holds] => 3,4
Run Code Online (Sandbox Code Playgroud)

我希望它返回:

[holds] => array(3,4)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ari 14

正如我在评论中所说的那样:你需要使用这样的php代码将数据分解为数组:

$holds = explode(',', $holds);
Run Code Online (Sandbox Code Playgroud)

因为mysql没有数据类型的概念.


Bon*_*imo 8

从MySQL 5.7.22开始,使用 JSON_ARRAYAGG() 方法可以实现这一点

阅读更多:https ://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html#function_json-arrayagg

例子:

SELECT JSON_ARRAYAGG(category.slug) as categories From categories
Run Code Online (Sandbox Code Playgroud)


Has*_*min 5

如果您需要在 MySQL 级别上执行此操作,那么您可能会将其解析为对象。您可以执行以下操作

SELECT CONCAT("[", GROUP_CONCAT(category.name), "]") AS categories
From categories
Run Code Online (Sandbox Code Playgroud)