Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 17:27   #1
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию Как залпом исправить значение полей таблицы

Добрый день. Посоветуйте как лучше исправить одинаковые ошибки в таблице.
У меня есть таблица товаров, в ней 741 товар, и у каждого есть поле "большая картинка" и "маленькая картинка". Так вот по глупости, в этих полях прописал путь к каждой картинке таким образом "img\\view\\..\\name.jpg"
А база для сайта, и пути надо было писать с нормальным "/" - вот таким слешем.
И мне так лень в 1782 ячейках вручную исправлять одинаковые ошибки. Могу я как-то сделать это запросом, да так, что бы это заняло как можно меньше времени?

UPD: Кстати, пути к картинкам разные. Наверно это усложняет задачу.

UPD2: О! Возможный вариант решения. Если MySql можно как-нибуть получить SQL запрос для создания этой, уже созданной и заполненной, таблицы. То не составит труда написать программу, которая переделает мой файл с запросом на правильный.
Можно ли получить такой запрос на создание?

Последний раз редактировалось bullvinkle; 03.11.2009 в 17:48.
bullvinkle вне форума Ответить с цитированием
Старый 03.11.2009, 18:36   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

тебе нужно что-то типа replace()
если есть такое в мускуле, то заюзай
если нет, то можно:
1) написать какую-нить функу, которая обработает строку пути посимвольно и заменит слеши + апдейт текущей строки
2) написать на прогу на любом доступном языке, которая будет коннектиться, выбирать данные из таблички, заменять символы и апдейтить текущую строчку
soleil@mmc вне форума Ответить с цитированием
Старый 03.11.2009, 18:50   #3
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Спасибо! В MySql функция replace() есть! Буду осваивать.
bullvinkle вне форума Ответить с цитированием
Старый 03.11.2009, 19:26   #4
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

На счет функции replace.
Я пишу вот так
Код:
UPDATE `products` SET `small_photo` =  REPLACE(`small_photo`, `\`, `/`) WHERE `id`=5
А мне говорт, что у меня нет колонки `\`. Ну так правильно, это и не колонка, а символ, который хочу заменить. Вроде синтаксис функции у меня правильный. Что я делаю не так?
bullvinkle вне форума Ответить с цитированием
Старый 03.11.2009, 19:46   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

похоже что нет у тебя в мускуле такой функи
то что ты нашел - это вот это (покури доку)

так что лабай функу/приладу
soleil@mmc вне форума Ответить с цитированием
Старый 03.11.2009, 20:12   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

странно, похоже в Мускуле, строковые функции допускаются только в области SELECT и WHERE
согласно вот этому - 6.3.2 Строковые функции:
Цитата:
REPLACE(str,from_str,to_str)
Возвращает строку str, в которой все вхождения строки from_str заменены на to_str:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2009, 02:48   #7
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

буду писать программу.


и почему по SQL документация даже на русском такая непонятная?
bullvinkle вне форума Ответить с цитированием
Старый 04.11.2009, 12:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
буду писать программу.
можно и так.

но я бы всё-таки, для начала, прислушался к совету soleil@mmc и попробовал через UDF функцию решить данную проблему.

и ещё. если результаты запроса в Мускуле можно сохранить в качестве новой таблицы
(в Oracle это делается так:
create table Tab2 as select .... from table1
в MSSQL
select ... into Tab2 from table1
)
или если можно создать VIEW'шку,
тогда можно попробовать создать новую таблицу с исправленным значениеи и проапдейтить значения первой таблицы по созданной. (надеюсь, что в таблице уникальный ключ присутствует?!!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2009, 13:18   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от bullvinkle Посмотреть сообщение
На счет функции replace.
Я пишу вот так
Код:
UPDATE `products` SET `small_photo` =  REPLACE(`small_photo`, `\`, `/`) WHERE `id`=5
А мне говорт, что у меня нет колонки `\`. Ну так правильно, это и не колонка, а символ, который хочу заменить. Вроде синтаксис функции у меня правильный. Что я делаю не так?
Кавычки не те, надо
Код:
UPDATE `products` SET `small_photo` =  REPLACE(`small_photo`, '\\', '/') WHERE `id`=5
Somebody вне форума Ответить с цитированием
Старый 04.11.2009, 13:50   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Кавычки не те, надо
Вот так да! Очень похоже, что Вы правы!!
Если так - однозначно Вам жирный +
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать значение полей в документе в текст dima9 Microsoft Office Word 14 22.10.2011 21:28
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
Как вывести значение полей из выделенной записи в DBGrid ? DS75 БД в Delphi 5 30.04.2009 13:40
Как выводить значения отдельных полей таблицы при выборе записи в DBGrid Sinker БД в Delphi 9 25.03.2009 12:28
Как отловить значение из таблицы? mik Microsoft Office Excel 5 27.10.2008 16:34