2017-07-27 23 views
1

我在Oracle中有一個特殊的需求。 表格中有一列中有不同的值,但前例:Limited,Ltd,Ltd.等聽起來相似。但我需要對待這些,並且不應將其視爲不同的值。 我用下面的解碼器試了一下,但這裏的catch值是我們不知道的。下面只是一個例子。SQL:如何在Oracle中將相似的聲音值視爲相同?

Create table test_dup(col1 varchar2(25)); 

Insert into test_dup values('limited'); 
Insert into test_dup values('ltd.'); 
Insert into test_dup values('Inc'); 
Insert into test_dup values('incorporate'); 

Select distinct decode(col1, 'limited', 1, 'ltd.', 1, 'Inc', 2, 'incorporate', 2) from dual; 

這適用於值已知但在我的要求中,值未知。

請幫我解決這個問題。

由於提前, Savitha

+2

你可以使用'soundex'功能來匹配發音類似的值。或者,對於更強大的相似性方法,請參閱https://stackoverflow.com/questions/653157/a-better-similarity-ranking-algorithm-for-variable-length-strings –

+0

嚴格來說,從數據庫的角度來看,你將不得不由用戶映射每個定義。沒有適當的映射,任何數據都可能意味着什麼我相信類似的方法可以通過使用前端算法來使用模糊匹配,但不通過後端。 – Isaiah3015

+0

@rd_nielsen,我們通過Soundex嘗試了它,但它沒有準確地給我們預期的結果。我們會嘗試採用您分享的鏈接中提供的方法。謝謝您的幫助。 – Savitha

回答

0

我發現通過Oracle-SQL來做到這一點。它通過UTL_MATCH包。

SELECT utl_match.JARO_WINKLER_SIMILARITY('LTD。','LIMITED')FROM DUAL;

問候, Savitha

相關問題