2014-02-21 4 views
2

У меня есть быстрое требование, в котором мне нужно обновить данные в моем поврежденном db. У меня есть несколько текстовых столбцов, где текст содержит & nbsp, и хотя мы исправили проблему в коде, мне все равно нужно исправить поврежденные данные в db.Использование Заменить в команде обновления DB2

Я думаю, что я могу сделать

UPDATE table_name 
    SET column_name=(
     SELECT REPLACE(colum_name, ' ', '') 
     FROM table_name 
     WHERE id=1234) 
WHERE id=1234 

, но мне придется сделать это индивидуально для каждой строки. Есть ли более простой запрос, который проверяет все строки в конкретном столбце и удаляет тег nbsp &?

Спасибо за помощь.

+0

Этот выбор будет возвращать несколько строк и обновление потерпит неудачу. – user2483083

+0

Даже с коррелированным подзапросом? 'UPDATE table_name t1 SET t1.column_name = (SELECT REPLACE (t1.column_name, ' ', '') FROM table_name t1)' – Alexander

+0

Ошибка DB2 811 РЕЗУЛЬТАТ ВЫПОЛНЕННОГО ВЫБРАТЬ ВЫБРАТЬ ИЛИ ПОДТВЕРЖДЕНИЕ В УСТАНОВЛЕННОЙ ЗАКЛЮЧЕНИИ ОБНОВЛЕНИЯ ЗАЯВЛЕНИЕ - ТАК ТАКОЙ БОЛЬШЕ ЧЕМ ОДНОГО РЯДА ИЛИ РЕЗУЛЬТАТ СУБКЕРА ОСНОВНОГО ПРОГНОЗИРОВАНИЯ БОЛЬШЕ ЧЕМ ОДНА СТОИМОСТЬ – user2483083

ответ

1

Вы можете сделать это с помощью хранимой процедуры или анонимного блока

Это должно быть что-то вроде этого.

begin 
declare atend boolean default false; 
declare val char(32); 
declare newstring char(32); 
declare c cursor for 
    select col from table; 

open c; 
fetch c into val; 
while (atend = false) do 
    set newstring = replace(val, ' ', ''); 
    update table set col = newstring where current of c; 
    fetch c into val; 
end while; 
[email protected] 
8

Я думаю, что другие эксперты усложнять решение, которое действительно требует только простой UPDATE:

UPDATE table_name SET column_name = REPLACE(column_name, ' ', '') 
    WHERE column_name LIKE '% %' 
+0

Согласовано, хотя я, вероятно, поместил бы поиск в предложение 'WHERE', чтобы убедиться, что это _has_ оскорбительное значение , Не ускорять работу с индексом (полное сканирование таблицы требуется здесь, люди), просто чтобы сократить количество реально обновляемых строк (и количество потенциальных проблем, которые могут быть созданы). –

Смежные вопросы