Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql-计算两个字符串之间的soundex差异_Mysql_Soundex - Fatal编程技术网

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

Mysql-计算两个字符串之间的soundex差异,mysql,soundex,Mysql,Soundex,我在mysql表中存储了一些歌曲名称及其预先计算的soundex。我想将用户输入的soundex与预先计算的soundex进行比较。并按用户输入和歌曲名称之间差异的升序获得结果 我尝试了以下查询(java): 但是strcmp只返回1,0或-1。因此,订购是不正确的 也尝试了,其中pre\u computed\u soundex=soundex(用户输入),但这只是返回完全匹配的soundex。完全低技术,并且假设只使用soundex函数的前四个字符,还假设“aaaa”是用户输入 SELEC

我在mysql表中存储了一些歌曲名称及其预先计算的soundex。我想将用户输入的soundex与预先计算的soundex进行比较。并按用户输入和歌曲名称之间差异的升序获得结果

我尝试了以下查询(java):

但是strcmp只返回1,0或-1。因此,订购是不正确的


也尝试了
,其中pre\u computed\u soundex=soundex(用户输入)
,但这只是返回完全匹配的soundex。

完全低技术,并且假设只使用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) 

你能准确地描述一下“difference”的意思吗?@Aioros Like difference是在MSSQL server中实现的。根据文档,difference返回两个字符串的声音片段中相同的字符数。在MySQL查询中实现这一点将非常复杂。您最好编写一个存储过程或用编程语言管理它。非常感谢您的想法,因为它给了我方向。关于这一点,还有一个问题:在您的查询中,soundex函数将被调用多少次?它乐观地假设,对于相同的输入,应该只调用一次?我刚才回答了你的另一个问题,但只是针对解决方案,答案是肯定的mysql调用了它4次,为了避免它,你做了一个子查询,详细答案见上面链接的问题
  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)