我有一些歌曲名称和他们预先计算的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。
答案 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)