JSON_SET 没有更新 MySQL 中的空 JSON 字段
问题:JSON_SET 没有更新 MySQL 中的空 JSON 字段 我有一个可以为空的 JSON MySQL 5.7 字段,我发现它几乎不可能工作。 示例查询: UPDATE`json_test`SET`data`u003d JSON_SET(`data`, '$.a', 1) 如果字段数据已经为 NULL,则不会更新。 如果是{ "a" : 2 },那么它将正确更新为 1。如果尚未设置,我需要
·
问题:JSON_SET 没有更新 MySQL 中的空 JSON 字段
我有一个可以为空的 JSON MySQL 5.7 字段,我发现它几乎不可能工作。
示例查询:
UPDATE`json_test`SET`data`u003d JSON_SET(`data`, '$.a', 1)
如果字段数据已经为 NULL,则不会更新。
如果是{ "a" : 2 }
,那么它将正确更新为 1。如果尚未设置,我需要设置它,这是 JSON_SET 应该做的。
任何想法发生了什么?
解答
它的不应该使用空值
否则,文档中不存在路径的路径/值对将被忽略且无效。
现在 mysql 不允许您在要更新的同一个表上使用子查询,但是您可能仍然可以使用 CASE/WHEN 使用 UPDATE JOIN 来解决这个问题,但我太懒了,所以我给您提供了两个查询解决方案。
UPDATE `json_test` SET `data` = JSON_SET(`data`, '$.a', 1) WHERE data IS NOT NULL;
UPDATE `json_test` SET `data` = JSON_OBJECT('$.a', 1) WHERE data IS NULL;
更多推荐
已为社区贡献23584条内容
所有评论(0)