MySQL JSON_REPLACE - 如果密钥不存在,则创建密钥

时间:2021-07-28 06:44:07

标签: mysql

我正在使用 JSON_REPLACE 来更新密钥的值,但是如果密钥不存在,我很难在更新它之前弄清楚如何创建它。

这就是我的查询的样子。

$query_update = "UPDATE `forms` SET `conf` = JSON_REPLACE(`conf`, '$.title', '$title') WHERE id='32'";

知道如何在同一个查询中做到这一点吗?

更新 感谢下面 Juan Eizmendi 和 Salman A 的评论,将 JSON_REPLACE 更改为 JSON_SET 解决了问题。

更新后的查询看起来像这样

$query_update = "UPDATE `forms` SET `conf` = JSON_SET(`conf`, '$.title', '$title') WHERE id='32'";

1 个答案:

答案 0 :(得分:2)

您可以使用 JSON_SET 代替 JSON_REPLACE,如果密钥不存在,它将插入或更新现有密钥:

SELECT JSON_SET('{}', '$.title', 'new title');
-- {"title": "new title"}

SELECT JSON_SET('{"title":"old title"}', '$.title', 'new title');
-- {"title": "new title"}