Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách thay thế giá trị được phân tách bằng dấu phẩy trong cột bảng bằng oracle giá trị nhập của người dùng

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy vĩ độ và độ dài từ sdo_geometry trong oracle

  2. cách sử dụng COALESCE trong oracle để kết hợp dữ liệu từ hai hàng

  3. Ảnh hưởng của việc thay đổi cài đặt NLS_LANG trong sổ đăng ký cho Máy khách Oracle

  4. DBMS_PARALLEL_EXECUTE và các khoản trợ cấp gián tiếp cho quy trình

  5. Hàm TO_YMINTERVAL () trong Oracle