Mysql - 计算两个字符串之间的soundex差异

时间:2013-09-04 08:04:44

标签: mysql soundex

我有一些歌曲名称和他们预先计算的soundex存储在mysql表中。我想比较用户输入的soundex和预先计算的soundex'es。并按用户输入和歌曲名称之间的差异升序获得结果。

我尝试过以下查询(在java中):

String query="SELECT * FROM song ORDER BY STRCMP(pre_calculated_soundex,SOUNDEX("+user_input+")) ASC ";

但是strcmp只返回1,0或-1。所以订购不正确。

还尝试了WHERE pre_calculated_soundex=SOUNDEX(user_input),但这只是返回完全匹配的soundex。

1 个答案:

答案 0 :(得分:1)

完全低技术,假设只使用soundex函数的前四个字符,并假设“aaaa”是用户输入

  SELECT * 
FROM   song 
ORDER  BY Substr(pre_calculated_soundex, 1, 1) = 
                    Substr(Soundex("aaaa"), 1, 1) 
                                                 + Substr(pre_calculated_soundex 
                    , 2, 1) = 
                    Substr 
                    (Soundex("aaaa"), 2, 1) 
                    + Substr(pre_calculated_soundex, 3, 1) 
                    = Substr(Soundex("aaaa"), 3, 1) 
                      + Substr(pre_calculated_soundex, 4, 1 
                      ) 
                      = Substr(Soundex("aaaa"), 4, 1)