delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Du kan erstatte '123' med en parameter, hvis du vil.
Men en bedre måde ville være ikke at gemme kommaseparerede værdier og i stedet oprette en detaljetabel. Hvis du har brug for at lede efter en bestemt værdi inden for en kommasepareret liste, kan du ikke gøre brug af indekser, blandt andre begrænsninger.
[edit] Misforstod spørgsmålet. Du mente dette:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Tilføj ',' før og efter for at matche elementer i begyndelsen eller slutningen af værdien.
- Erstat med værdien ',123,' (inden for kommaer) for at forhindre, at 1234 også matches ved et uheld.
- Brug substr to gange for at fjerne det første og sidste tegn (de tilføjede kommaer)
- Brug instr i hvor for at forhindre opdatering af poster, der ikke skal opdateres (bedre ydeevne).