将 JSON 数组转换为 MySQL 表中的单独行可能是一个挑战。但是,可以使用各种技术来实现此操作,包括以下技术:
方法 1:JSON_EXTRACT 和 Union
此方法涉及使用 JSON_EXTRACT 函数提取单个数组元素并使用 UNION 运算符将它们组合起来。举个例子:
SET @j = '[1, 2, 3]'; SELECT JSON_EXTRACT(@j, '$[0]') AS value UNION SELECT JSON_EXTRACT(@j, '$[1]') AS value UNION SELECT JSON_EXTRACT(@j, '$[2]') AS value;
方法二:JSON_TABLE (MySQL 8 )
MySQL 8 引入了 JSON_TABLE 函数,它允许你创建一个基于JSON 文档。这提供了一种将 JSON 数组转换为行的简单方法。下面是一个示例:
SET @j = '[5, 6, 7]'; SELECT * FROM JSON_TABLE( @j, "$[*]" COLUMNS( Value INT PATH "$" ) ) data;
方法 3:字符串拆分和 JSON_TABLE
此技术利用了 MySQL 缺乏内置字符串拆分功能的事实。通过将分隔字符串转换为 JSON 字符串,您可以使用 JSON_TABLE 来实现拆分功能。
set @delimited = 'a,b,c'; SELECT * FROM JSON_TABLE( CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'), "$[*]" COLUMNS( Value varchar(50) PATH "$" ) ) data;
这些方法为将 JSON 数组转换为 MySQL 中的单独行提供了通用的解决方案。虽然 MySQL 5.7 可能需要更复杂的方法,但 MySQL 8 引入了更高效的选项,例如 JSON_TABLE,为数据操作开辟了新的可能性。
以上是如何在 MySQL 中将 JSON 数组转换为行?的详细内容。更多信息请关注PHP中文网其他相关文章!