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
不同的soundex值php和mysql_Php_Mysql_Soundex - Fatal编程技术网

不同的soundex值php和mysql

不同的soundex值php和mysql,php,mysql,soundex,Php,Mysql,Soundex,我正在尝试创建一个mysql查询,它将从数据库中选择soundex等效的姓氏。 在php中,我通过以下方式生成soundex代码: $sxname=soundex($name) 然后我构建了mysql查询 $query = "SELECT * FROM database WHERE soundex(surname) LIKE '$sxname'" ; 这适用于许多姓氏,但不适用于其他姓氏,如CAWS。CAWS的PHPSoundex值为C200,而mysql值为C000 有没有办法解决这些分歧

我正在尝试创建一个mysql查询,它将从数据库中选择soundex等效的姓氏。 在php中,我通过以下方式生成soundex代码:

$sxname=soundex($name)

然后我构建了mysql查询

$query = "SELECT * 
FROM database
WHERE soundex(surname)
LIKE '$sxname'"
;
这适用于许多姓氏,但不适用于其他姓氏,如CAWS。CAWS的PHPSoundex值为C200,而mysql值为C000

有没有办法解决这些分歧

我尝试过使用一个函数,所以这两个函数都是用php创建的:

function mysql_soundex($name)
{
    $snname = soundex($name);
    return $snname;
}
并将其调用到:

$query = "SELECT * 
FROM database
WHERE mysql_soundex('surname')
LIKE '$sxname'"
;

但这也不起作用。

让MySQL只做soundex转换:

$query =
        "SELECT * FROM database
        WHERE SOUNDEX(surname) = SOUNDEX('$name')";
。。。或严格等效的语法:

$query =
        "SELECT * FROM database
        WHERE surname SOUNDS LIKE '$name'";

你的第二种方法永远不会奏效。您不能声明PHP中的函数供MySQL使用。谢谢-我认为这很简单,我只是看不到。我现在发现的一个问题是mysql soundex比php soundex宽松得多,并且与标准soundex编码不匹配——因此我在数据库中添加了另一个字段来保存每个姓氏的php soundex代码。