как заменить элемент в каждом столбце таблицы базы данных? - PullRequest
1 голос
/ 16 августа 2010

Я не гуру баз данных, делаю большинство вещей через PHP, например, манипулирование данными, даже если это внутренняя задача. Тем не менее, PHP не очень полезен в этом случае. У меня есть таблица с примерно 0,4 миллионами записей в ней, как 16 столбцов, все остальное работает нормально, но я заполнил эту таблицу из текстового файла, и этот текстовый файл имел большинство значений в каждом столбце в двойных кавычках, таких как "United States of America" "London" и т. Д.

Я хочу удалить эти двойные кавычки, где только смогу найти их с помощью одного запроса или сценария SQL. Я пробовал PHP и его метод str_replace, но, очевидно, записи слишком велики, чтобы продолжать применять эту функцию к каждой записи, а затем выполнить 2 запроса для каждого значения. Может ли быть какое-либо решение для SQL для этого?

База данных MySQL, движок можно переключить с MyISAM на InnoDB. Я видел это решение здесь: SQL: поиск строки в каждом столбце varchar в базе данных , но не уверен, будет ли оно работать для меня. Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 августа 2010

(непроверенные)

update mytable set mycol = case
    when mycol like '"%"' then trim(both '"' from mycol)
    else mycol end;

На самом деле, вам, вероятно, даже не нужно выражение регистра:

update mytable set mycol = trim(both '"' from mycol)'

Повторите запрос для других столбцов или расширьте его, чтобы охватить все ваши столбцы.

1 голос
/ 16 августа 2010

REPLACE () должно работать нормально.

UPDATE `table` SET `column` = REPLACE(`column`, '"', '')
...