如何通過算法規範化和轉換欄位文本
我已經從一個銷售系統導出了姓名和電子郵件,我正試圖將它們轉移到我的電子郵件服務提供商中。我必須標準化數據。
電子郵件欄位具有如下數據:
John Smith <jsmith@gmail.com>
我想通過算法將所有電子郵件欄位條目轉換為:
jsmith@gmail.com
您知道執行此操作的最佳工具、腳本、流程或 Excel 函式嗎?這讓我絞盡腦汁,因為我不想手動操作。
範例 SQL 腳本
有關將名稱解析為單獨元素的具體範例,請參見(SO 問題): 如何從 SQL 中的全名欄位中解析名字、中間名和姓氏?
接受的答案是一個很好的例子,說明如何使用自己的算法將您的姓名與電子郵件分開。
工具
那裡有一些,稍後我會在有時間找到時更新此答案(或者,如果您找到了一些,請編輯此答案)
**注意:**無論你使用什麼方法,對你的結果做一個健全性檢查驗證,大多數好的方法將能夠準確地解析你 90+% 的數據,真正的技巧是如何辨識 <10% 的數據沒有正確已解析(可以像進行完整性檢查和掃描結果一樣簡單)
如果您附近有 SQL Server 實例,建議您將 excel 文件導入表中,然後解析數據。導入是通過一個非常簡單的嚮導完成的 - 右鍵點擊數據庫 - 任務 - 導入數據 - 選擇您的源提供程序 (excel),然後選擇您的文件。之後,您應該能夠執行查詢來執行此操作。我為這個特定的範例建構了一個簡單的範例:
DECLARE @x VARCHAR(100) = 'John Smith <jsmith@gmail.com>'
SELECT CHARINDEX('<', @x) AS Start_, CHARINDEX('>', @x) AS End_,
SUBSTRING(@x, CHARINDEX('<', @x)+1, CHARINDEX('>', @x)-CHARINDEX('<', @x)-1) as Mail
但 Andrew 對健全性檢查是正確的。你不應該只相信你的腳本。一些數據可以有另一種格式。