delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Du kan ersätta '123' med en parameter om du vill.
Men ett bättre sätt skulle vara att inte lagra kommaseparerade värden och istället skapa en detaljtabell. Om du behöver leta efter ett specifikt värde i en kommaseparerad lista kan du inte använda index, bland andra begränsningar.
[redigera] Missförstod frågan. Du menade så här:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Lägg till ',' före och efter för att matcha objekt i början eller slutet av värdet.
- Ersätt med värdet ',123' (inom kommatecken) för att förhindra att 1234 av misstag matchas också.
- Använd substr två gånger för att ta bort det första och sista tecknet (de tillagda kommatecken)
- Använd instr i var för att förhindra uppdatering av poster som inte behöver uppdateras (bättre prestanda).