首页 > 数据库 > mysql教程 > 如何将 JSON 数组转换为行并在 MySQL 中使用 GROUP_CONCAT()?

如何将 JSON 数组转换为行并在 MySQL 中使用 GROUP_CONCAT()?

Patricia Arquette
发布: 2024-11-26 06:39:10
原创
854 人浏览过

How Can I Convert JSON Arrays to Rows and Use GROUP_CONCAT() in MySQL?

MySQL 中的 JSON 数组到行转换

简介

在 MySQL 中使用 JSON 数组需要了解其 JSON 操作函数。然而,当将这些数组转换为行或对其执行 GROUP_CONCAT() 等操作时,就会出现挑战。本文解决了此类场景,并提供了使用 MySQL 的 JSON 功能的解决方案。

从 JSON 数组到行

要为 JSON 数组中的每个元素插入一行,有一种方法是使用 JSON_EXTRACT() 手动提取每个元素并将结果合并在一起。然而,一种更简洁的方法是利用 MySQL 8 的 JSON_TABLE 函数:

SET @j = '[1, 2, 3]';
SELECT *
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;
登录后复制

这将创建一个包含一列“Value”的表,其中包含 JSON 数组的元素。

JSON 数组上的 GROUP_CONCAT()

将 JSON 数组的元素连接成使用 GROUP_CONCAT() 的逗号分隔字符串,您可以使用 JSON_TABLE 和 GROUP_CONCAT() 的组合:

SELECT GROUP_CONCAT(Value)
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;
登录后复制

JSON 拆分

对于类似于 STRING_SPLIT 的场景(),比如将逗号分隔的字符串转换为行,可以利用 JSON_TABLE通过将字符串转换为 JSON 数组:

set @delimited = 'a,b,c';

SELECT *
     FROM
       JSON_TABLE(
         CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'),
         "$[*]"
         COLUMNS(
           Value varchar(50) PATH "$"
         )
       ) data;
登录后复制

这将创建一个包含一列“Value”的表,其中包含分隔字符串的元素。

以上是如何将 JSON 数组转换为行并在 MySQL 中使用 GROUP_CONCAT()?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板