2

我有一些歌曲名称和它们预先计算的 soundex 存储在 mysql 表中。我想将用户输入的 soundex 与预先计算的 soundex 进行比较。并按照用户输入和歌曲名称的差值升序得到结果。

我尝试了以下查询(在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。

4

1 回答 1

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) 
于 2013-09-04T08:35:36.673 回答