Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да замените стойност, разделена със запетая, в колона на таблица с въведена от потребителя стойност oracle

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

Можете да замените '123' с параметър, ако желаете.

Но по-добър начин би бил да не съхранявате стойности, разделени със запетая, и вместо това да създадете таблица с подробности. Ако трябва да търсите конкретна стойност в списък, разделен със запетая, не можете да използвате индекси, наред с други ограничения.

[редактиране]Грешно съм разбрал въпроса. Имахте предвид това:

update YourTable t
set
  t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
  instr(','||t.col||',', '123') > 0
  • Добавете ',' преди и след, за да съответствате на елементи в началото или края на стойността.
  • Заменете, като използвате стойността ',123,' (в рамките на запетая), за да предотвратите случайно съвпадение и на 1234.
  • Използвайте substr два пъти, за да премахнете първия и последния знак (добавените запетаи)
  • Използвайте instr в where, за да предотвратите актуализирането на записи, които не трябва да се актуализират (по-добра производителност).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешки при създаването на тялото на пакета на Oracle

  2. Oracle SQL - Генериране и актуализиране на колона с различно произволно число във всеки ред

  3. Жаба отрязва/закръгля големи числа на Oracle?

  4. Намерете максималните последователни години за всеки идентификатор в таблица (Oracle SQL)

  5. Въведената стойност на съобщението за грешка на Oracle не е достатъчно дълга