sql >> Databáze >  >> RDS >> Oracle

Jak nahradit hodnotu oddělenou čárkami ve sloupci tabulky uživatelskou vstupní hodnotou oracle

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

Pokud chcete, můžete nahradit '123' parametrem.

Ale lepší způsob by bylo neukládat hodnoty oddělené čárkami a místo toho vytvořit tabulku podrobností. Pokud potřebujete hledat konkrétní hodnotu v seznamu odděleném čárkami, nemůžete kromě jiných omezení používat indexy.

[editovat] Špatně jsem pochopil otázku. Měli jste na mysli toto:

update YourTable t
set
  t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
  instr(','||t.col||',', '123') > 0
  • Přidejte ',' před a za, aby odpovídaly položkám na začátku nebo na konci hodnoty.
  • Nahraďte pomocí hodnoty ',123' (mezi čárkami), abyste zabránili náhodné shodě 1234.
  • Dvakrát použijte substr k odstranění prvního a posledního znaku (přidané čárky)
  • Použijte příkaz instr v části where, abyste zabránili aktualizaci záznamů, které není třeba aktualizovat (lepší výkon).


  1. Seskupit podle počtu (nejlepších 5) a počtu (všechny ostatní)

  2. Co je DBMS? – Komplexní průvodce systémy správy databází

  3. Relační dělení v mysql bez agregačních funkcí?

  4. Jak zrušit databázi pomocí TSQL a GUI - SQL Server / TSQL výukový program, část 25