Замена во всех полях значения (нужна помощь)

Тема в разделе "Базы данных", создана пользователем danneo, 22 май 2013.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    В таблице есть поле "title". В некоторых записях есть значения, например, монитор "к!". Нужно заменить "к!" на "к?".
    Подскажите, пожалуйста, как это сделать в MySQL быстро во всех записях, без скрипта, с помощью phpMyAdmin
     
  2. bat

    bat

    Регистр.:
    24 сен 2009
    Сообщения:
    976
    Симпатии:
    277
    Насколько я в курсе, через PhpMyAdmin по всей БД замену произвести нельзя, обсуждалось здесь
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    да мне не по всей базе, а только по таблице: все записи конкретной таблицы по конкретному полю.
     
  4. bat

    bat

    Регистр.:
    24 сен 2009
    Сообщения:
    976
    Симпатии:
    277
    UPDATE `table_name` SET `field` = REPLACE(`field`, "Слово1", "Слово2");
     
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Вот нашел...
    UPDATE таблица SET поле = REPLACE (поле, 'текст для замены', 'на что заменять');
    Правильно получается в моем случае?
    PHP:
    UPDATE 'news' SET title REPLACE (title,'к!','к?');  
    Таблица new
    Поле title
     
  6. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    дак это будет при условии, что поле равно "к!", а у меня title текст и данные буквы. Нужно найти где включены эти буквы, а не единственные.
    Регуляркой, наверно? Но как не знаю...
    И попробовал, не получилось. Пишет ошибку:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''news' SET title = REPLACE (title, 'м?', 'м2')' at line 1
    "М?" кодируется в "м?". Как этого избежать?
     
  7. leha706

    leha706 Постоялец

    Регистр.:
    6 мар 2013
    Сообщения:
    92
    Симпатии:
    32
    Я в таких случаях поступаю так:
    1. В phpMyAdmin таблица=>экспорт
    2. Notepad++ Найти и заменить
    3. В phpMyAdmin таблица=>импорт
     
    danneo нравится это.
  8. APXOH

    APXOH Создатель

    Регистр.:
    16 янв 2013
    Сообщения:
    36
    Симпатии:
    6
    Чуть измените запрос добавив WHERE
    UPDATE таблица SET поле = REPLACE (поле, 'текст для замены', 'на что заменять') WHERE title LIKE '%текст для замены%'
    А вообще приведите пару примеров более близких к реальности значений и на что их надо заменить, возможно что-то неправильно понимаю
     
  9. tartas

    tartas

    Регистр.:
    5 сен 2010
    Сообщения:
    294
    Симпатии:
    29
    Проблемы с кодировкой так как они не выставлены, выставить можно так :
    SET character_set_results = 'utf8'
    character_set_client = 'utf8' - у вас похоже это не выставлено как надо
    character_set_connection = 'utf8'
    character_set_database = 'utf8'

    И Заменяйте как сказали выше через replace. все должно сработать.
     
  10. APXOH

    APXOH Создатель

    Регистр.:
    16 янв 2013
    Сообщения:
    36
    Симпатии:
    6
    попробуйте так (вместо нескольких запросов один)
    SET NAMES utf8;
    UPDATE таблица SET поле = REPLACE (поле, 'текст для замены', 'на что заменять') WHERE title LIKE '%текст для замены%';