2013-06-19 188 views
0

sqlite中的soundex函數對字符串長度有限制嗎? 當我發現SQLite soundex字符串長度

SELECT soundex('Schneider Thomson'), soundex('Schneider Rene'), soundex('Schneider') 

結果是所有等於S536相同的價值,然而結果:

SELECT soundex('Schn Thomson'), soundex('Schn Rene'), soundex('Schn'); 

是對每個字符串不同,值是

soundex('Schn Thomson') = S535 
soundex('Schn Rene') = S565 
soundex('Schn')   = S500 

請問任何人都可以解釋爲什麼?

回答

1

Soundex algorithm被設計爲處理單個單詞。 (爲了簡化,它所編碼的第一個字母和該第一以下三個輔音。)

1

爲了提供多一點澄清CL的回答,所述編碼使用的第一個字母,然後編碼以下輔音(與H的例外,W,Y),直到生成3位數字。密西西比是一個說明這一點的詞。 MISSISSIPPI擁有M210的SOUNDEX。

  1. M是第一個字母,後面跟着第一個輔音S.然後S被重複並被SOUNDEX編碼忽略。
  2. 下一個輔音是P,它後面沒有另一個有效的字母(只是重複的p和i)。
  3. 因此零是最後一位數字。

希望能夠對SOUNDEX如何編碼單詞提供更多的說明。有關更多信息,請參見Genealogy.com這篇文章解釋如何在研究名稱時使用SOUNDEX。這可以解釋爲什麼supercell和supercalifragilisticexpialidocious有相同的SOUNDEX,S162。

+0

SOUNDEX和名稱更常見的例子 - 艾莉森和亞歷山大都有值A425(ALSN = ALXN) – HorusKol