删除MariaDB数据库中的JSON数据

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

我需要删除表

money
中第
inventory
列中名为
users
的数据。 数据存储在
LONGTEXT
中,存储方式如下:

[{"slot":1,"count":2,"metadata":[],"name":"clip"},{"slot":2,"count":1,"metadata":[],"name":"money"}]

在此示例中,我需要将上述数据更改为:

[{"slot":1,"count":2,"metadata":[],"name":"clip"}]

我很感激任何对我的问题的回答。

我尝试使用:

UPDATE users
SET inventory = JSON_REMOVE(inventory, '$.[?(@.name == "money")]');

但是这段代码删除了整个 JSON 并得到了 NULL 指针。

sql mysql mariadb
1个回答
0
投票
SET @j='[{"slot":1,"count":2,"metadata":[],"name":"clip"},{"slot":2,"count":1,"metadata":[],"name":"money"}]';
SELECT JSON_REMOVE(
    @j,
    substring_index(
        JSON_UNQUOTE(JSON_SEARCH(@j, 'one', 'money', NULL, '$[*].name')),
        '.', 1
    )
) AS result
© www.soinside.com 2019 - 2024. All rights reserved.