加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 23:26:58 所属栏目:百科 来源:网络整理
导读:我的数据库中有一个用户表,其中包含“全名”字段 在我的工具上,我上传了一些文件,然后在数据库中插入数据之前,我通过比较数据库中的全名字段和文件上的全名字段来检查用户是否存在(这是唯一的选项,我无法比较ids). 我的问题是:当它们包含两个以上的单词时,
我的数据库中有一个用户表,其中包含“全名”字段

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读