Je ne sais vraiment pas exactement quoi faire, je suis un peu nouveau en SQL ... devrais-je utiliser une chaîne ou la remplacer dans mon cas?
J'ai dans mon courrier électronique DB appelé appelé, maintenant je voulais éditer tous les emails se terminant par email.com à email.org. Que dois-je faire?
Cela dépend de ce que vous devez faire. Vous pouvez utiliser replace
puisque vous souhaitez remplacer la valeur:
select replace(email, '.com', '.org')
from yourtable
Ensuite, pour UPDATE
votre table avec la nouvelle fin, vous utiliseriez alors:
update yourtable
set email = replace(email, '.com', '.org')
Vous pouvez également développer ceci en vérifiant les 4 derniers caractères de la valeur email:
update yourtable
set email = replace(email, '.com', '.org')
where right(email, 4) = '.com'
Cependant, le problème avec replace()
est que .com
peut être dans d’autres emplacements du courrier électronique, pas seulement le dernier. Donc, vous voudrez peut-être utiliser substring()
de la manière suivante:
update yourtable
set email = substring(email, 1, len(email) -4)+'.org'
where right(email, 4) = '.com';
Voir SQL Fiddle avec Demo
Utiliser substring()
renverra le début de la valeur de l'e-mail, sans le .com
final, puis vous concaténerez le .org
à la fin. Cela empêche le remplacement de .com
ailleurs dans la chaîne.
Vous pouvez également utiliser stuff()
, qui vous permet de supprimer et d’insérer simultanément:
update yourtable
set email = stuff(email, len(email) - 3, 4, '.org')
where right(email, 4) = '.com';
Ceci supprimera 4 caractères à la position du troisième caractère avant le dernier (qui est la position de départ du .com
final) et insérera plutôt .org
.
Voir SQL Fiddle avec Demo pour cette méthode également.
Vous pouvez simplement utiliser REPLACE
:
UPDATE myTable SET emailCol = REPLACE(emailCol, '.com', '.org')`.
Mais prenez en compte qu'une adresse email telle que [email protected]
sera mise à jour pour [email protected]
.
Si vous voulez être plus sûr, vous devriez vérifier les 4 derniers caractères en utilisant RIGHT
, et ajouter .org
au SUBSTRING
manuellement. Notez l'utilisation de UPPER
pour rendre la recherche de .com
insensible à la casse.
UPDATE myTable
SET emailCol = SUBSTRING(emailCol, 1, LEN(emailCol)-4) + '.org'
WHERE UPPER(RIGHT(emailCol,4)) = '.COM';
Voyez le travail dans ceci SQLFiddle .
Pour éviter les noms de mise à jour contenant .com
comme [email protected]
à [email protected]
, procédez comme suit:
UPDATE Yourtable
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org')