JSON_MERGE_PATCH 具有空值(在 Javascript 中)
JSON_MERGE_PATCH with null values (in Javascript)
如文档中所写,JSON_MERGE_PATCH 将删除设置为 null 的每个值,以下示例将从我的设置中删除 header 值 json场
const data = JSON.stringify({header: null, otherdata: ...})
await connection.query(UPDATE shops SET JSON_MERGE_PATCH(settings, ?), data)
但是如果我想将值设置为空怎么办,如果我用引号将 header: 'null'
括起来,您可以猜到: 它以字符串形式输入 'null'进入我的数据库。
有谁知道是否可以 mysql 将我的 json 字段更新为空值?
由于似乎没有针对此问题的纯粹 MySQL 解决方案,您最好在 JavaScript 中实现它。
你可以这样实现:
- 获取所有要修改某些ID的记录
- 使用类似How can I merge properties of two JavaScript objects dynamically?的解决方案来合并对象
- 用新值更新所有记录
另一种方法是对您拥有的每个对象键使用 JSON_SET
:
UPDATE shops SET JSON_SET(settings, '$.header', null)
-- Then repeat for each json key you want to modify
如文档中所写,JSON_MERGE_PATCH 将删除设置为 null 的每个值,以下示例将从我的设置中删除 header 值 json场
const data = JSON.stringify({header: null, otherdata: ...})
await connection.query(UPDATE shops SET JSON_MERGE_PATCH(settings, ?), data)
但是如果我想将值设置为空怎么办,如果我用引号将 header: 'null'
括起来,您可以猜到: 它以字符串形式输入 'null'进入我的数据库。
有谁知道是否可以 mysql 将我的 json 字段更新为空值?
由于似乎没有针对此问题的纯粹 MySQL 解决方案,您最好在 JavaScript 中实现它。
你可以这样实现:
- 获取所有要修改某些ID的记录
- 使用类似How can I merge properties of two JavaScript objects dynamically?的解决方案来合并对象
- 用新值更新所有记录
另一种方法是对您拥有的每个对象键使用 JSON_SET
:
UPDATE shops SET JSON_SET(settings, '$.header', null)
-- Then repeat for each json key you want to modify