Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Remova o elemento da matriz por valor no mysql json


Se você sabe que nunca há duplicatas no array, você pode usar JSON_SEARCH para encontrar o caminho para o valor que você deseja excluir e, em seguida, use JSON_REMOVE para removê-lo. Observe que você precisa verificar se JSON_SEARCH realmente encontra um valor, caso contrário JSON_REMOVE anulará todo o campo:
UPDATE waitinglist 
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL

Fiz uma pequena demonstração no dbfiddle .

Observe que você deve usar JSON_UNQUOTE na resposta de JSON_SEARCH para torná-lo um caminho válido para JSON_REMOVE .