SQL比较两个字符串中的字符数总计相同

时间:2014-09-09 14:08:00

标签: sql sql-server-2008

总而言之,我有两个不同的系统,在两个系统中我都有客户,不幸的是两个系统都允许您徒手输入商家名称,所以最终得到下面的例子。

Column A has a value of "St John Baptist Church"
Column B has a value of "John Baptist St Church"

我需要提出的是一个可以比较两列以查找最匹配的值的查询。 从那里我计划编写一个Web应用程序,我可以让某人通过并验证所有条目。我会举一些我已经做过的例子,不幸的是我老实说甚至不知道我要求的是否可能。我认为虽然在这个时代,我确信我不是第一个试图尝试这个的人。

1 个答案:

答案 0 :(得分:1)

你可以尝试创建一个类似这个php脚本的脚本来帮助你:

$words = array();
$duplicates = array();

function _compare($value, $key, $array) {
    global $duplicates;

    $diff = array_diff($array, $value);

    if (!empty($diff)) {
        $duplicates[$key] = array_keys($diff);
    }

    return $diff;
}

$mysqli = new mysqli('localhost', 'username', 'password', 'database');
$query = "SELECT id, business_name FROM table";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_object()) {
        $pattern = '#[^\w\s]+#i';
        $row->business_name = preg_replace($pattern, '', $row->business_name);
        $_words = explode(' ', $row->business_name);
        $diff = array_walk($words, '_compare', $_words);    
        $words[$row->id][] = $_words;

        $result->close();
    }
}

$mysqli->close();

这没有经过测试,但你需要这样的东西,因为我不认为单独使用SQL是可能的。

----------编辑----------

或者您可以对评论中的人推荐Levenshtein distance in T-SQL

进行研究

希望它有所帮助,祝你好运!