mysql - JSON_ARRAY() 创建单个元素数组而不是多个
问题描述
我正在尝试从某些表中提取数据,并且在使用GROUP_CONCAT
with之后QUOTE
,我正在尝试使用将其解析为 JSON 数组JSON_ARRAY()
。
问题在于它创建了单个元素数组,而不是预期的多个元素。
询问:
set session group_concat_max_len = 65000;
CREATE TABLE IF NOT EXISTS someTable
(VulnerabilityId VARCHAR(40), Versions TEXT, Manager VARCHAR(100), PackageName VARCHAR(400), INDEX temp_vulnerabilityId_index(VulnerabilityId)) AS
(
SELECT VulnerabilityId, GROUP_CONCAT(DISTINCT QUOTE(vulnerabilityExtendedData.Version) SEPARATOR ', ') AS Versions, Manager, Name AS PackageName
FROM (
SELECT *
FROM myTable pv
JOIN
(
SELECT Id, Version, Name, 'Mvn' AS Manager
FROM mvn
)
pkgManagers
ON pv.PackageId = pkgManagers.Id
) vulnerabilityExtendedData
GROUP BY Id, Name, Manager
);
SELECT JSON_ARRAY(CONVERT(Versions, CHAR(10000))) AS ARRAY, JSON_ARRAY(Versions AS ANOTHER_ARRAY, Versions
FROM someTable;
DROP TABLE IF EXISTS someTable;
返回的是:
大批 | ANOTHER_ARRAY | 版本 |
---|---|---|
["'1.6.1', '1.7'"] | ["'1.6.1', '1.7'"] | '1.6.1'、'1.7' |
使用“版本”列中的值使用简单查询时:
SELECT JSON_ARRAY('1.6.1', '1.7')
我得到了预期的结果
["1.6.1", "1.7"]
我尝试将“版本”转换并转换为字符、引用和取消引用,但无法产生预期的结果。
有任何想法吗?
解决方案
推荐阅读
- python - Pandas:按日期对一列进行分组,并计算另一列中特定值的累积数
- javascript - 点击处理程序在页面加载时运行,尽管传递了它但没有接收到事件
- python - 如果model._meta.abstract:AttributeError:类型对象'ProductObject'没有属性'_meta'
- vue.js - Vue好表firstSortType和initialSortBy不起作用
- r - 当从 Shiny 调用 R 脚本时 - 脚本可以只有代码吗?
- gitlab-ce - gitlab 存储库未显示在我的导航器中
- mysql - 如何将 dbase III 文件转换为 mysql?
- r - 用 Class 的实例初始化 R6 类并返回相同的 Class
- c# - 将泛型类的类型限制为结构列表
- dependency-injection - 尝试在 C# 类的导航管理器上使用 Blazor 中的依赖注入