You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中更新JSON字段的子元素

问题:更新TEXT列中JSON数组的单个项属性

场景说明

表schema_repo的sr_schema列是TEXT类型,实际用于存储JSON数据,JSON结构示例如下:

{
  "version": "5",
  "ws_version": "5",
  "user": "XXXX",
  "fields": [
    {
      "crm_attribute": "PREFECTURE_CODE",
      "sp_attribute": "PREFECTURE_CODE",
      "process_type": "field",
      "in_data_type": "String",
      "out_data_type": "String",
      "array": "0",
      "default_value": ""
    },
    {
      "crm_attribute": "EDUCATION_LEVEL",
      "sp_attribute": "EDUCATION_LEVEL",
      "process_type": "field",
      "in_data_type": "String",
      "out_data_type": "String",
      "array": "0",
      "default_value": ""
    }
  ]
}

尝试的SQL语句

为了更新fields数组中单个项的属性,编写了如下SQL,但存在语法问题:

UPDATE schema_repo sr
SET sr.sr_schema = JSON_SET(
    sr.sr_schema,
    '$.fields',
    JSON_ARRAYAGG(
        JSON_OBJECT(
            'array', JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.array')),
            'crm_attribute', TRIM(BOTH ' ' FROM JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.crm_attribute'))),
            'default_value', JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.default_value')),
            'in_data_type', JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.in_data_type')),
            'out_data_type', JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.out_data_type')),
            'process_type', JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.process_type')),
            'sp_attribute', TRIM(BOTH ' ' FROM JSON_UNQUOTE(JSON_EXTRACT(field.value, '$.sp_attribute')))
        )
    )
), JSON_TABLE(
    sr.sr_schema,
    '$.fields[*]' COLUMNS (
        value JSON PATH '$'
    )
) AS field;

报错信息

执行上述SQL时出现语法错误:

SQL Error [1064] [42000]: (conn=8976) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(
    sr.sr_schema,
    '$.fields[*]' COLUMNS (
        value JSON PATH '$...' at line 16

疑问

官方文档中仅提供了JSON_TABLE()用于SELECT查询的示例,不清楚如何用它实现数据更新。请问更新fields数组中单个项属性的需求是否可以实现?


内容的提问来源于stack exchange,提问作者Sayantan Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:07:23