MySQL

 
RU ChiefPilot #24.02.2005 12:22
+
-
edit
 

ChiefPilot

втянувшийся

Народ, подскажите, пожалуйста, кто знает, как заменить конец в адресе почты, сохранённом в базе в виде строки с, например, ".end" на ".ru". Запрос примерно такой:

UPDATE `ibf_members` SET `email`=".ru" WHERE `email`=".end"

Но ничего не происходит! А очень нужно чтобы все почты с хвостом .end заменили хвост на .ru. Что нужно исправить? Спасибо!
 
+
-
edit
 

Balancer

администратор
★★★★☆
ChiefPilot> UPDATE `ibf_members` SET `email`=".ru" WHERE `email`=".end"

1. поиск по маске нужно делать через LIKE и знак "%". Это если маска жёсткая, не регексп.

2. функцию замены я не знаю, не пробовал, но от балды, синтаксис будет в духе:

UPDATE `ibf_members` SET `email`=STR_REPLACE(`email`, '.end', '.ru') WHERE `email` LIKE '%.end';

Функцию замены подстроки поищи уже сам на mysql.com в документации :)
 
RU ChiefPilot #04.03.2005 17:36
+
-
edit
 

ChiefPilot

втянувшийся

Вот спасибо - это оказалось почти готовое решение! Функция только просто REPLACE оказалась, а так всё покатило! Спасибо! Только у меня из-за каких-то проблем с кодировками данных в полном виде запрос получился такой:

UPDATE `ibf_members` SET `email`=REPLACE(`email`, CONVERT( _utf8 '.end'
USING koi8r ), CONVERT( _utf8 '.ru'
USING koi8r )) WHERE `email` LIKE CONVERT( _utf8 '%.end'
USING koi8r )
COLLATE koi8r_general_ci;

Дело в том, что начинался форум на версии MySQL, которая ещё не знала, что такое UTF, а теперь там версия, которая уже знает. :) И чего-то она недовольна, если писать запрос без этих CONVERT'ов. :)
 
+
-
edit
 

Balancer

администратор
★★★★☆
1. Сделай mysqldump в файл. С полным пересозданием таблиц (чтобы начиналось с DROP TABLE ...) В UTF-8 желательно. Убедись, что с кодировкой всё в порядке. Если нет - поиграй с ключиком --default-character-set=

2. Когда данные окажутся в файле в UTF-8 кодировке, отредактируй файл, удалив все упоминания о кодироках.

3. Настрой mysql на работу в UTF-8.

4. Втяни этот файл в MySQL. Если системная локаль отличается от UTF-8, то опять --default-character-set=utf8

В будущем работай в UTF-8 всюду :D
 
+
-
edit
 

Balancer

администратор
★★★★☆
MySQL репликация
Никогда, блин, при процессе безостановочного переноса живой БД с одного сервера на другой через репликацию не дропайте таблицу на мастере, предварительно не отключив репликацию :)

Итог — около получаса потерянных на форуме сообщений и час на восстановление из дампа при переносе…

// Транслировано с juick.com
 

Последние действия над темой

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru