如何在MySQL中将元素推送到JSON

问题描述 投票:2回答:1

我试图将一个新元素推送到MySQL中的JSON数组。

恩。在下表中人物:

id(int)     liked_ids(JSON)
   1              [2,3]

现在我想将5推入到likes_ids中。

我看了一下JSON_ARRAY_APPEND,但是从文档中找不到使用它的方法。

mysql mysql-json
1个回答
4
投票

你需要使用:

UPDATE tab
SET liked_ids = JSON_ARRAY_APPEND (liked_Ids, '$', 5)
WHERE id = 1;

DBFiddel Demo

编辑:

我的likes_ids最初为null。如何在创建表时默认将其强制为数组?

你可以尝试CASE表达式:

UPDATE tab
SET liked_ids = CASE WHEN liked_ids IS NULL THEN '[5]'
                ELSE  JSON_ARRAY_APPEND (liked_Ids, '$', 5)
                END
WHERE id = 1;

--or as @Paul Spiegel mentioned
UPDATE tab
SET liked_ids = COALESCE(JSON_ARRAY_APPEND(liked_Ids, '$', 5), JSON_ARRAY(5))
WHERE id = 1;

DBFiddle Demo2

© www.soinside.com 2019 - 2024. All rights reserved.