mysql - 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 值不变。
我怎样才能做到这一点?
解决方案
您可以使用JSON 修改功能JSON_SET()
:
select json_set(js, "$.enable_page_title", 1) new_js from t;
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"
} |
推荐阅读
- c# - DbCommand.ExecuteNonQuery 中的非查询是什么?
- firebase-analytics - Google Data Studio 按值的频率可视化数据
- oracle - 在 Informatica 中获取系统错误代码 126
- javascript - 根据变量显示多个 div
- r - 将一个数据框的变量添加到包含更多行的数据框列表中
- python - 为什么 gensim 的 simple_preprocess Python 标记器似乎跳过了“i”标记?
- android - 有什么办法可以改变Android普通应用程序中PowerButton上的长按和HomeButton上的按下?
- asp.net-mvc - 如何将 oracle LONG 列数据类型选择到 MVC 视图?
- java - 带有 ResponseListener 的 AsyncTask
- javascript - 如果尚未在 localStorage 中,如何将新对象推送到数组