Подтвердить что ты не робот

Как заменить значение поля sql

Я действительно не знаю точно, что делать, я немного новичок в SQL... я должен использовать подстроку или заменить в моем случае

У меня в моей базе данных, адресованной электронной почтой, теперь я хотел отредактировать все письма, заканчивающиеся на email.com, на адрес электронной почты. Что мне делать?

4b9b3361

Ответ 1

Это зависит от того, что вам нужно делать. Вы можете использовать replace, так как вы хотите заменить значение:

select replace(email, '.com', '.org')
from yourtable

Затем, чтобы UPDATE ваша таблица с новым окончанием, вы должны использовать:

update yourtable
set email = replace(email, '.com', '.org')

Вы также можете расширить это, установив последние 4 символа значения электронной почты:

update yourtable
set email = replace(email, '.com', '.org')
where right(email, 4) = '.com'

Однако проблема с replace() заключается в том, что .com может быть в других местах в электронной почте, а не только в последней. Поэтому вы можете использовать substring() следующим образом:

update yourtable
set email = substring(email, 1, len(email) -4)+'.org'
where right(email, 4) = '.com';

Смотрите SQL Fiddle with Demo

Использование substring() вернет начало значения электронной почты без окончательного .com, а затем конкатенирует .org до конца. Это предотвращает замену .com в другом месте строки.

В качестве альтернативы вы можете использовать stuff(), что позволяет одновременно выполнять как удаление, так и вставку:

update yourtable
set email = stuff(email, len(email) - 3, 4, '.org')
where right(email, 4) = '.com';

Это приведет к удалению 4 символов в позиции третьего символа перед последним (что является исходной позицией окончательного .com) и вместо этого вставьте .org.

См. SQL Fiddle with Demo для этого метода.

Ответ 2

Вы можете просто использовать REPLACE:

UPDATE myTable SET emailCol = REPLACE(emailCol, '.com', '.org')`.

Но учтите, что адрес электронной почты, такой как [email protected], будет обновлен до [email protected].

Если вы хотите быть на более безопасной стороне, вы должны проверить последние 4 символа с помощью RIGHT и добавить .org вместо SUBSTRING. Обратите внимание на использование UPPER, чтобы поиск конца .com не учитывался.

UPDATE myTable 
SET emailCol = SUBSTRING(emailCol, 1, LEN(emailCol)-4) + '.org'
WHERE UPPER(RIGHT(emailCol,4)) = '.COM';

Посмотрите, как это работает в SQLFiddle.

Ответ 3

Чтобы избежать имен обновлений, содержащих .com как [email protected] до [email protected], вы можете сделать это:

UPDATE Yourtable
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org')

Ответ 4

Попробуйте этот запрос, он изменит записи на .com

 UPDATE tablename SET email = replace(email, '.com', '.org') WHERE  email LIKE '%.com';