delete from yourtable t
where
instr(','||t.col||',', '123') > 0
Bạn có thể thay thế '123' bằng một tham số nếu muốn.
Nhưng cách tốt hơn là không lưu trữ các giá trị được phân tách bằng dấu phẩy và thay vào đó hãy tạo một bảng chi tiết. Nếu bạn cần tìm kiếm một giá trị cụ thể trong danh sách được phân tách bằng dấu phẩy, bạn không thể sử dụng các chỉ số, trong số các giới hạn khác.
[sửa] Đã hiểu sai câu hỏi. Ý của bạn là:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
- Thêm ',' vào trước và sau để khớp các mục ở đầu hoặc cuối giá trị.
- Thay thế bằng giá trị ', 123' (trong dấu phẩy) để tránh việc vô tình trùng khớp với 1234.
- Sử dụng substr hai lần để xóa ký tự đầu tiên và ký tự cuối cùng (các dấu phẩy đã thêm)
- Sử dụng hướng dẫn để ngăn cập nhật các bản ghi không cần cập nhật (hiệu suất tốt hơn).