2015-10-16 77 views
0

我有一個包含電子郵件地址的用戶表。替換sql中的電子郵件地址的域部分

在開發過程中,我們不希望將電子郵件發送給這些用戶,同時我們也希望使用這些數據。

我要替換的電子郵件地址等的所有域部分:

[email protected] 

[email protected] 

我想這個表上運行的更新statment做到這一點。

我以前使用REPLACE,但我猜測會需要一個正則表達式?

+0

爲什麼不乾脆關掉電子郵件功能在發展耳鼻喉科?一般來說,發送電子郵件的系統的開發環境無論如何都會有虛假的SMTP偵聽器用於開發/調試目的。開發環境不應該指向生產電子郵件服務器。 – David

+0

Sql服務器不支持正則表達式,但您可以使用PATINDEX()和SUBSTRING()來完成您所需要的。 –

+0

如果您替換域信息,數據將無用。您可以通過使用@來完全使地址無效。 –

回答

2

使用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 

LiveDemo

如果您使用的版本比2012低,你需要+來連接:

UPDATE #tab 
SET email = LEFT(email, CHARINDEX('@', email)) + 'local.com'; 
+1

請注意,CONCAT()從SQL Server 2012開始可用。 –

+0

@TabAlleman完成 – lad2025

+2

@TabAlleman謝謝,我沒有使用2012年:) –

相關問題