我有一个名为 product_option_param 的表,其中包含一个JSON类型的 povs 列,它基本上保留了带有ID的JSON数组(例如,[1,2,3]
)< / p>
当我需要删除ID 1 时,我执行此操作:
UPDATE product_option_param
SET povs = JSON_REMOVE(
povs, replace(JSON_SEARCH(povs, 'one', 1), '"', '')
)
WHERE json_search(povs, 'one', 1) IS NOT NULL
但它只是将数组中 1 的所有单元格变为null。我做错了什么?
答案 0 :(得分:0)
尝试:
SET @`id` := '1';
UPDATE `product_option_param`
SET `povs` =
JSON_REMOVE(
`povs`,
JSON_UNQUOTE(
JSON_SEARCH(
REPLACE(
REPLACE(
REPLACE(
`povs`,
'[',
'["'
),
']',
'"]'
),
',',
'","'
),
'one',
@`id`
)
)
)
WHERE
JSON_CONTAINS(`povs`, @`id`);
请参阅db-fiddle。