1

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

$sxname = soundex($name);

然后我建立了mysql查询

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

这适用于很多姓氏,但不适用于其他姓氏 - 例如 CAWS。CAWS 的 php soundex 值为 C200,但 mysql 值为 C000。

有没有解决这些差异的方法?

我确实尝试使用一个函数,所以两者都是在 php 中创建的:

function mysql_soundex($name)
{
    $snname = soundex($name);
    return $snname;
}

并调用它:

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

但这也没有用。

4

1 回答 1

3

让 MySQL 只做 soundex 转换:

$query =
        "SELECT * FROM database
        WHERE SOUNDEX(surname) = SOUNDEX('$name')";

...或严格等效的语法糖:

$query =
        "SELECT * FROM database
        WHERE surname SOUNDS LIKE '$name'";
于 2014-04-04T00:47:53.457 回答