SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.09.2010 19:09:49

ocheretko
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Замена данных в таблице по условию

Здравствуйте, подскажите пожалуйста.
Есть предположим три записи в таблице:

adgitycmpxsc@mail.ru;a1234
qwertympxsc@mail.ru;a1
dfhdsempxsc@mail.ru

Как с помощью MySql провести все записи к виду "dfhdsempxsc@mail.ru", точнее отбросить все, что после точки с запятой. Но есть также записи в таблице, в которых нету точки с запятой.

Неактивен

 

#2 04.09.2010 19:25:00

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Замена данных в таблице по условию

Ну, какой-нибудь
UPDATE tablename
SET fieldname = IF (LOCATE(';', fieldname), LEFT(fieldname, LOCATE(';', fieldname)), fieldname);

Неактивен

 

#3 04.09.2010 19:51:27

ocheretko
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Re: Замена данных в таблице по условию

Выполнил Ваш запрос,
UPDATE testdrop
SET nickname = IF (LOCATE(';', nickname), LEFT(nickname, LOCATE(';', nickname)), nickname);

Заменило, но осталось во всех записях, в которых заменило в конце точка с запятой. А как сделать, чтоб запрос удалял и эту ;?

Неактивен

 

#4 04.09.2010 20:01:05

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Замена данных в таблице по условию

А немножко подумать и/или почитать про функции LOCATE/LEFT и поставить где надо -1?

Неактивен

 

#5 04.09.2010 20:01:18

ocheretko
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Re: Замена данных в таблице по условию

Все, вопрос решен:

UPDATE ignore testdrop
SET nickname = IF (LOCATE(';', nickname), LEFT(nickname, LOCATE('u;', nickname)), nickname);

Спасибо форуму за помощь!

Неактивен

 

#6 04.09.2010 20:02:07

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Замена данных в таблице по условию

А когда будет не mail.ru а gmail.com - вы что будете делать?

Неактивен

 

#7 04.09.2010 20:29:22

ocheretko
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Re: Замена данных в таблице по условию

не знаю) почитаю про функции LOCATE/LEFT

Неактивен

 

#8 05.09.2010 23:58:16

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: Замена данных в таблице по условию

@paulus
А с WHERE не луч'ше?

UPDATE testdrop
SET nickname = LEFT(nickname, LOCATE(';', nickname)-1)
WHERE nickname LIKE '%;%';

Неактивен

 

#9 06.09.2010 00:42:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Замена данных в таблице по условию

Ммм, да, лучше smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson