Parse

如何通過算法規範化和轉換欄位文本

  • February 8, 2011

我已經從一個銷售系統導出了姓名和電子郵件,我正試圖將它們轉移到我的電子郵件服務提供商中。我必須標準化數據。

電子郵件欄位具有如下數據:

John Smith <jsmith@gmail.com>

我想通過算法將所有電子郵件欄位條目轉換為:

jsmith@gmail.com

您知道執行此操作的最佳工具、腳本、流程或 Excel 函式嗎?這讓我絞盡腦汁,因為我不想手動操作。

範例 SQL 腳本

有關將名稱解析為單獨元素的具體範例,請參見(SO 問題): 如何從 SQL 中的全名欄位中解析名字、中間名和姓氏?

接受的答案是一個很好的例子,說明如何使用自己的算法將您的姓名與電子郵件分開。

工具

那裡有一些,稍後我會在有時間找到時更新此答案(或者,如果您找到了一些,請編輯此答案)

**注意:**無論你使用什麼方法,對你的結果做一個健全性檢查驗證,大多數好的方法將能夠準確地解析你 90+% 的數據,真正的技巧是如何辨識 <10% 的數據沒有正確已解析(可以像進行完整性檢查和掃描結果一樣簡單)

如果您附近有 SQL Server 實例,建議您將 excel 文件導入表中,然後解析數據。導入是通過一個非常簡單的嚮導完成的 - 右鍵點擊數據庫 - 任務 - 導入數據 - 選擇您的源提供程序 (excel),然後選擇您的文件。之後,您應該能夠執行查詢來執行此操作。我為這個特定的範例建構了一個簡單的範例:

DECLARE @x VARCHAR(100) = 'John Smith &lt;jsmith@gmail.com&gt;'

SELECT CHARINDEX('&lt;', @x) AS Start_, CHARINDEX('&gt;', @x) AS End_,

SUBSTRING(@x, CHARINDEX('&lt;', @x)+1, CHARINDEX('&gt;', @x)-CHARINDEX('&lt;', @x)-1) as Mail

但 Andrew 對健全性檢查是正確的。你不應該只相信你的腳本。一些數據可以有另一種格式。

引用自:https://dba.stackexchange.com/questions/1133