delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Jeśli chcesz, możesz zastąpić „123” parametrem.
Ale lepszym sposobem byłoby nie przechowywać wartości oddzielonych przecinkami i zamiast tego utworzyć tabelę szczegółów. Jeśli potrzebujesz szukać określonej wartości na liście oddzielonej przecinkami, nie możesz między innymi korzystać z indeksów.
[edytuj] Źle zrozumiałem pytanie. Miałeś na myśli to:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Dodaj „,” przed i po, aby dopasować elementy na początku lub na końcu wartości.
- Zastąp, używając wartości „,123” (w przecinkach), aby zapobiec przypadkowemu dopasowaniu 1234.
- Użyj dwukrotnie substr, aby usunąć pierwszy i ostatni znak (dodane przecinki)
- Użyj instr w miejscu, aby zapobiec aktualizowaniu rekordów, które nie wymagają aktualizacji (lepsza wydajność).