Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara mengganti nilai yang dipisahkan koma di kolom tabel dengan nilai input pengguna oracle

delete from yourtable t
where
  instr(','||t.col||',', '123') > 0

Anda dapat mengganti '123' dengan parameter jika Anda mau.

Tetapi cara yang lebih baik adalah tidak menyimpan nilai yang dipisahkan koma, dan sebagai gantinya membuat tabel detail. Jika Anda perlu mencari nilai tertentu dalam daftar yang dipisahkan koma, Anda tidak dapat menggunakan indeks, di antara batasan lainnya.

[sunting]Salah memahami pertanyaan. Maksud Anda ini:

update YourTable t
set
  t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
  instr(','||t.col||',', '123') > 0
  • Tambahkan ',' sebelum dan sesudah untuk mencocokkan item di awal atau akhir nilai.
  • Ganti menggunakan nilai ',123,' (dalam koma) untuk mencegah pencocokan 1234 secara tidak sengaja.
  • Gunakan substr dua kali untuk menghapus karakter pertama dan terakhir (tambahan koma)
  • Gunakan instr di tempat untuk mencegah pembaruan catatan yang tidak perlu diperbarui (kinerja lebih baik).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan CONTINUE In Loops Untuk Melanjutkan Kontrol Di Oracle

  2. Permintaan untuk memeriksa ukuran tabel di database Oracle

  3. SELECT * FROM TABLE(fungsi pipelined):dapatkah saya memastikan urutan baris dalam hasil?

  4. Ambil nilai dari FieldA, kirim ke fungsi db, kembalikan nilai ke FieldB

  5. ubah ukuran tipe data di sql