2013-10-30 33 views
0

我正在尋找字符串字段並將字符按字母順序重新排列。例如,如果它是名稱字段,並且名稱是MICHAEL SMITH,它將更改爲ACEHHIILMMST。使用SQL按字母順序重新排列字符串中的字符使用SQL

主要目的是在字段中尋找重複名稱,例如某人可能犯了錯字並將其命名爲MICHEAL SMITH或MICHAEL SMTIH。我想到的另一個選擇是爲每個字母(1-26)分配一個數字值,然後如果這些值的總和與名稱字段的長度相同,則它將被認爲是重複的。問題是我不知道如何總結字符串字段中的數字。

此外,我使用的是Oracle SQL,因此這些功能將基於可用的功能。

任何想法或至少開始的地方?

編輯

我不是想詢問如何做到這一點的代碼,我要求更多,如果它是可以或不可以有可能的話,你會我的起點是(類型功能,技術等)

+0

詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,以及爲什麼他們不工作。 – Kermit

+0

你會考慮使用存儲函數來重新安排嗎? –

+0

我不是要求代碼,我是要求一個出發點。我對SQL的瞭解僅限於運行更基本的查詢,所以我並不總是知道它能做什麼,不能做什麼。 – user1723699

回答

4

檢查utl_match。它可以用來衡量兩個字符串的相似度。

select utl_match.edit_distance_similarity('MICHAEL SMITH','MICHEAL SMITH') from dual 
85 

select utl_match.edit_distance_similarity('MICHAEL SMITH','MICHELLE SMITH') from dual 
79 

select utl_match.edit_distance_similarity('MICHAEL SMITH','FRANKIE JONES') from dual 
8 
+0

謝謝喬,看起來這將是一個更簡單的方法,我不知道。 – user1723699

相關問題