MySQL json_remove返回null

时间:2017-12-08 06:20:33

标签: mysql json parsing

我有一个名为 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。我做错了什么?

1 个答案:

答案 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