不同的soundex值php和mysql
我正在尝试创建一个mysql查询,它将从数据库中选择soundex等效的姓氏。 在php中,我通过以下方式生成soundex代码: $sxname=soundex($name) 然后我构建了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 有没有办法解决这些分歧
$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代码。