delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Você pode substituir '123' por um parâmetro, se desejar.
Mas uma maneira melhor seria não armazenar valores separados por vírgulas e criar uma tabela de detalhes. Se você precisar procurar um valor específico dentro de uma lista separada por vírgulas, não poderá fazer uso de índices, entre outras limitações.
[editar] Não entendi a pergunta. Você quis dizer isso:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Adicione ',' antes e depois para corresponder aos itens no início ou no final do valor.
- Substitua usando o valor ',123' (entre vírgulas) para evitar a correspondência acidental de 1234 também.
- Use substr duas vezes para remover o primeiro e o último caractere (as vírgulas adicionadas)
- Use instr no where para evitar a atualização de registros que não precisam ser atualizados (melhor desempenho).