我有一個包含電子郵件地址的用戶表。替換sql中的電子郵件地址的域部分
在開發過程中,我們不希望將電子郵件發送給這些用戶,同時我們也希望使用這些數據。
我要替換的電子郵件地址等的所有域部分:
[email protected]
與
[email protected]
我想這個表上運行的更新statment做到這一點。
我以前使用REPLACE,但我猜測會需要一個正則表達式?
我有一個包含電子郵件地址的用戶表。替換sql中的電子郵件地址的域部分
在開發過程中,我們不希望將電子郵件發送給這些用戶,同時我們也希望使用這些數據。
我要替換的電子郵件地址等的所有域部分:
[email protected]
與
[email protected]
我想這個表上運行的更新statment做到這一點。
我以前使用REPLACE,但我猜測會需要一個正則表達式?
使用CHARINDEX
獲得索引@
,LEFT
獲取部分郵件並連接local.com
。
CREATE TABLE #tab(email NVARCHAR(100));
INSERT INTO #tab
VALUES ('[email protected]t.com');
UPDATE #tab
SET email = CONCAT(LEFT(email, CHARINDEX('@', email)), 'local.com');
SELECT *
FROM #tab
如果您使用的版本比2012低,你需要+
來連接:
UPDATE #tab
SET email = LEFT(email, CHARINDEX('@', email)) + 'local.com';
正則表達式的解決方案
CREATE TABLE tab(email text);
INSERT INTO tab
VALUES ('[email protected]');
UPDATE tab set email = regexp_replace(email, '(\S+)@\S+', '\[email protected]');
爲什麼不乾脆關掉電子郵件功能在發展耳鼻喉科?一般來說,發送電子郵件的系統的開發環境無論如何都會有虛假的SMTP偵聽器用於開發/調試目的。開發環境不應該指向生產電子郵件服務器。 – David
Sql服務器不支持正則表達式,但您可以使用PATINDEX()和SUBSTRING()來完成您所需要的。 –
如果您替換域信息,數據將無用。您可以通過使用@來完全使地址無效。 –