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 関数の最初の 4 文字のみが使用されていると仮定し、「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 に答える