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