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

A melhor maneira de remover o valor do campo SET?


Se o valor que você precisa remover do conjunto não puder estar presente mais de uma vez, você poderá usar isto:
UPDATE yourtable
SET
  categories =
    TRIM(BOTH ',' FROM REPLACE(CONCAT(',', categories, ','), ',2,', ','))
WHERE
  FIND_IN_SET('2', categories)

veja funcionando aqui . Se o valor puder estar presente mais de uma vez, isso removerá todas as ocorrências dele:
UPDATE yourtable
SET
  categories =
    TRIM(BOTH ',' FROM
      REPLACE(
        REPLACE(CONCAT(',',REPLACE(col, ',', ',,'), ','),',2,', ''), ',,', ',')
    )
WHERE
  FIND_IN_SET('2', categories)