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

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

Patricia Arquette
Patricia Arquette原创
2024-11-26 06:39:10904浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn