Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zastąpić wartość oddzieloną przecinkami w kolumnie tabeli wartością wprowadzoną przez użytkownika oracle?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd w OracleDataReader. Błąd:nieprawidłowa operacja. Połączenie jest zamknięte

  2. Oracle:Jak stworzyć funkcję zwracającą wartości dla zakładki SELECT * FROM WHERE nazwa IN (function())

  3. Najważniejsze nowe funkcje Oracle 12c

  4. Propagacja transakcji Oracle między C++ a Java

  5. Jak ustawić region strefy czasowej dla połączenia JDBC i uniknąć nieznalezionego regionu strefy czasowej SqlException?