delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Se lo desideri, puoi sostituire '123' con un parametro.
Ma un modo migliore sarebbe non memorizzare valori separati da virgole e creare invece una tabella dei dettagli. Se devi cercare un valore specifico all'interno di un elenco separato da virgole, non puoi utilizzare gli indici, tra le altre limitazioni.
[modifica]Ho frainteso la domanda. Intendevi questo:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Aggiungi ',' prima e dopo per abbinare gli elementi all'inizio o alla fine del valore.
- Sostituisci utilizzando il valore ',123,' (tra virgole) per evitare che anche 1234 corrisponda accidentalmente.
- Usa substr due volte per rimuovere il primo e l'ultimo carattere (le virgole aggiunte)
- Utilizzare instr in the where per impedire l'aggiornamento dei record che non devono essere aggiornati (prestazioni migliori).