mysql - 遇到动态列字符串格式非法

标签 mysql json mariadb

我正在尝试在 MariaDB 中使用 JSON。我的表格有两列:

ID - INT。 PK。自动递增。

JsonText - BLOB

我已将 Json 插入到 blob 列中,它看起来像这样:

{
    "Fields" : {
        "CalPeriod" : "1",
        "CalYear" : "2014",
        "CompanyCode" : "E009",
        "CreditDebitInd" : "H",
        "FiscalYear" : "2014",
        "MaxPostDate" : "2014-01-14T00:00:00",
        "MinPostDate" : "2014-01-14T00:00:00"
    }
}

但是,当我尝试选择数据并将其解析回来时,我收到了标题中发布的错误。

这是我的查询:

SELECT COLUMN_JSON(JsonText) FROM alliance.jsontest;

我不明白。我什至完全从这个网站复制了代码,但它仍然抛出相同的错误,或者它只是返回带有 BLOB 一词的列。

最佳答案

迟到总比不到好……

函数 COLUMN_JSON 旨在与动态列一起使用。 将 json 字符串插入 blob 列不会使其成为动态列。

要在此类列中插入数据,需要使用COLUMN_CREATE。 例如

INSERT INTO alliance.jsontest (JsonText)
VALUES (COLUMN_CREATE(
    "CalPeriod", "1", 
    "CalYear", "2014", 
    "CompanyCode", "E009", 
    "CreditDebitInd", "H", 
    "FiscalYear", "2014", 
    "MaxPostDate", "2014-01-14T00:00:00", 
    "MinPostDate", "2014-01-14T00:00:00"
));

然后您可以使用 COLUMN_JSON 或使用 COLUMN_GET 选择其中一列。

关于mysql - 遇到动态列字符串格式非法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088698/

相关文章:

php - 具有连接和聚合值的 MYSQL Group By

json - 将 NSData 对象转换为 NSDictionary 时出现问题

javascript - 为什么我的对象中的数据没有设置到我的 React 类组件中的 setState

android - Android 中的 Facebook json 解析

mysql - 如何在 mysql 存储过程中声明变量(本地,用户定义)?

sql - MariaDB,如何使用插入复制现有记录?

MySQL时间戳默认值无效

php - 如何在 Laravel 5.4 中使用数据库表值作为常量

mysql - 使用生成大量计算统计信息的 MariaDB View - 如何移动到计算表?

mysql - 日期 SQL 查询未按预期工作