2013-02-04 68 views
18

我真的不知道該怎麼做,我是一個有點新的SQL ...我應該使用字符串或更換我的情況如何更換SQL字段值

我在我的數據庫歸檔所謂的電子郵件,現在我想編輯所有以email.com結尾的電子郵件到email.org。我該怎麼辦?

回答

30

這取決於你需要做什麼。您可以使用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可以將在其他LOCA電子郵件中的tions不僅僅是最後一個。所以,你可能想使用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

+0

非常感謝你,它工作得很好。讚賞 – user2039512

+1

@ user2039512不客氣,我很樂意提供幫助。如果其中一個問題的答案是有幫助的,那麼一定要通過它左邊的複選標記來接受它。它將幫助未來的訪問者訪問該網站,並且您將得到網站代表接受。 :) – Taryn

3

你可以只使用REPLACE

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

但考慮到的電子郵件地址,如[email protected]將更新爲[email protected]

如果您希望更安全一點,則應使用RIGHT檢查最後4個字符,並手動將.org附加到SUBSTRING。請注意使用UPPER來搜索.com結尾不區分大小寫。

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

看到它在這工作SQLFiddle

-2

試試這個查詢它會改變記錄結束。COM

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

-1:這將取代電子郵件地址中的任何地方。它會因'john.comrad @ some.company.com'加倍失敗 –