首页 > 解决方案 > JSON_ARRAY() 创建单个元素数组而不是多个

问题描述

我正在尝试从某些表中提取数据,并且在使用GROUP_CONCATwith之后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"]

我尝试将“版本”转换并转换为字符、引用和取消引用,但无法产生预期的结果。

有任何想法吗?

标签: mysql

解决方案


推荐阅读