powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Изменить данный в таблице по шаблону.
14 сообщений из 14, страница 1 из 1
Изменить данный в таблице по шаблону.
    #39193527
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база mysql. В ней таблица, в таблице есть столбец(или как там его правильно)username , в этом столбце есть логины, вида test@test.ru. Можно ли при помощи скрипта изменить значение test@test.ru в test. т.е срезать по шаблону @* ? или как ни будь автоматизировать данный процесс?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193583
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SUBSTRING_INDEX(username,'@',1)
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193611
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Выдало такую ошибку
mysql> SUBSTRING_INDEX(username,'@',1);
ERROR 1064 (42000): 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 'SUBSTRING_INDEX(username,'@',1)' at line 1
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193642
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulatka,

Надо так
Код: sql
1.
mysql> Милый сервер, дай мне, пожалуйста, SUBSTRING_INDEX(username,'@',1)! Если можно, поищи, пожалуйста, там где мне надо;
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193797
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MikkiMouse, улыбнуло. Попробовал так SELECT SUBSTRING_INDEX(username,'@',1) FROM users WHERE username LIKE '%@%';
Он мне вернул значения в том виде в котором нужно. Но как мне этот результат записать?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193823
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел функцию update =)) написал такой запрос update users set username = (SELECT SUBSTRING_INDEX(username,'@',1) FROM users WHERE username LIKE '%@%'); я так понимаю запрос не правильный. как синтаксис должен быть у запроса?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39193855
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такой запрос делает то что мне нужно:
UPDATE users SET username = SUBSTRING_INDEX(username,'@',1) WHERE username LIKE '%@%';
Всем спасибо что помогли разобраться с проблемой, далеком от баз данных человеку.
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194010
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно как ни будь автоматизировать данный процесс? условно как только появилось такое значение. сработал "триггрер", и перезаписал данные?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194017
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulatkaусловно как только появилось такое значение. сработал "триггрер"зачем "условно" и почему "триггер" в кавычках? гуглите mysql trigger before insert
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194023
ShadowMaster63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bulatka,

а поправить клиент который пишет эти данные нельзя ?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194045
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

спасибо, сделал так
CREATE TRIGGER `test` BEFORE INSERT ON `user`
FOR EACH ROW
BEGIN
SET NEW.username = (UPDATE users SET username = SUBSTRING_INDEX(username,'@',1) WHERE username LIKE '%@%');
END
ругаеться на синтаксис. не могу понять что не так?
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194048
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulatka
Код: sql
1.
WHERE username LIKE '%@%'

Тут использование Like не оправдано. Разумнее
Код: sql
1.
WHERE LOCATE('@',username)


А если это одноразовая операция, и в отбор для обработки попадает более четверти записей, то WHERE можно вообще опустить.
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194055
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulatkaругаеться на синтаксис. не могу понять что не так?
Небось DELIMITER забыл...
bulatkaсделал так
Неправильно. Должно быть
Код: sql
1.
2.
3.
CREATE TRIGGER `test` BEFORE INSERT ON `user`
FOR EACH ROW
SET NEW.username = SUBSTRING_INDEX(NEW.username,'@',1);


Ктстаи, в таком варианте DELIMITER менять не требуется.
...
Рейтинг: 0 / 0
Изменить данный в таблице по шаблону.
    #39194122
bulatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

этот вариант отработал как надо. большое спасибо!!!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Изменить данный в таблице по шаблону.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]