【问题标题】:MariaDB COLUMN_JSON query returns binaryMariaDB COLUMN_JSON 查询返回二进制
【发布时间】:2025-12-06 10:50:02
【问题描述】:

我一直在尝试将动态列与 MariaDB v10.1.12 的实例一起使用。

首先,我发送以下查询:

INSERT INTO savedDisplays (user, name, body, dataSource, params) VALUES ('Marty', 'Hey', 'Hoy', 'temp', COLUMN_CREATE('type', 'tab', 'col0', 'champions', 'col1', 'averageResults'));

params 的类型被定义为 blob,就像文档所建议的那样。 接受查询,更新表。如果我 COLUMN_CHECK 结果,它告诉我没问题。

但是当我尝试选择时:

"SELECT COLUMN_JSON(params) AS params FROM savedDisplays;

我得到一个 {type: "Buffer", data: Array} 包含返回给我的二进制文件,而不是 {"type":"tab", "col0":"champions", "col1":"averageResults" } 我期待。

编辑:我可以使用 COLUMN_GET 就好了,但是我需要 params 字段中的每一列,并且我需要首先检查 type 属性以了解其中有哪些类型和有多少列JSON / 参数字段。我也许可以让它继续工作,但这需要多个查询,而不是只有一个。

有什么想法吗?

【问题讨论】:

    标签: json mariadb


    【解决方案1】:

    试试:

    SELECT CONVERT(COLUMN_JSON(params) USING utf8) AS params FROM savedDisplays
    

    在 MariaDB 10 中,这适用于每个表:

    SELECT CONVERT(COLUMN_JSON(COLUMN_CREATE('t', text, 'v', value)) USING utf8)
        as json FROM test WHERE 1 AND value LIKE '%12345%' LIMIT 10;
    

    node.js 中的输出

    [ TextRow { json: '{"t":"test text","v":"0.5339044212345805"}' } ]
    

    【讨论】: