首页 > 解决方案 > MySql 更新 JSON 值

问题描述

我在 mysql 数据库中有一个名为 的列params,其中包含 json 数据。请参阅下面的示例;

{
  "menu_text": 1,
  "menu-meta_description": "My Website",
  "enable_page_title": "0",
  "page_title_heading": "h2"
}

我只想将表中的每条记录的enable_page_title键更新为1, 。我需要保持所有其他 json 值不变。

我怎样才能做到这一点?

标签: mysqljson

解决方案


您可以使用JSON 修改功能JSON_SET()

select json_set(js, "$.enable_page_title", 1) new_js from t;

DB Fiddle 上的演示

with t as (
    select '{
        "menu_text": 1,
        "menu-meta_description": "My Website",
        "enable_page_title": "0",
        "page_title_heading": "h2"
    }' js
)
select json_pretty(json_set(js, "$.enable_page_title", 1)) new_js from t;

| new_js                                                                                                                |
| -------------------------------------------- |
| {
  "menu_text": 1,
  "enable_page_title": 1,
  "page_title_heading": "h2",
  "menu-meta_description": "My Website"
} |

推荐阅读