好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# – 将字符串数据库值与两个以上的单词进行比较

我的数据库中有一个用户表,其中包含“全名”字段

在我的工具上,我上传了一些文件,然后在数据库中插入数据之前,我通过比较数据库中的全名字段和文件上的全名字段来检查用户是否存在(这是唯一的选项,我无法比较ids).

我的问题是:当它们包含两个以上的单词时,如何比较这些字段?

有时全名不符合规定,例如:

-------------------------------------------------
|        Database       ||         File         |
-------------------------------------------------
| Michael Yves Pierrot  || Pierrot Michael Yves |
| Martin Dupont         || Dupont Martin        |
| Ben Jack Dupont       || Ben Dupont Jack      |
-------------------------------------------------

当只有两个单词时,我就可以使用这样的分割:

public string getId()
{
    string result;
    QueryModel Query = new QueryModel();
    string sql = "SELECT Username_Id FROM USERNAME WHERE Full_name = '" 
        + Full_name.Replace("'", "''") + "'";
    result = Query.ExecuteCommand(sql, "int");
    if (result != "0")
    {
        string FullName2 = Full_name.Split(' ')[1] + " " + Full_name.Split(' ')[0];
        sql = "SELECT Username_Id FROM USERNAME WHERE Full_name = '" 
            + FullName2.Replace("'", "''") + "'";
        result = Query.ExecuteCommand(sql, "int");
    }
    return result;
}

注意Query.ExecuteCommand(sql,“int”);当用户不存在时返回“0”.

因此,如果我的函数getId()返回“0”,我将插入新用户,如果它返回其他内容,则表示用户存在并将返回Username_Id

有人有想法吗?

谢谢.

你可以做下面的坏事(因为潜在的性能成本而坏):

SELECT Username_Id 
FROM USERNAME 
WHERE Full_name LIKE '%Michael%' AND Full_name LIKE '%Pierrot%'

‘%’运算符用于通配符. https://msdn.microsoft.com/en-us/library/ms189454.aspx

我也会参数化你的查询以防止SQL注入.

查看更多关于c# – 将字符串数据库值与两个以上的单词进行比较的详细内容...

  阅读:51次