我有一个页面可以返回登录用户,例如:AMR / JJohnson。我可以编写一个SQL查询来删除AMR / JJ,并返回包含" ohnson"我之所以需要第二个J被取消的原因是因为有些人在那里有中间的首字母,所以我需要只搜索姓氏。我试过这个,其他人没有运气......
cmd.CommandText = "SELECT * FROM Projects WHERE TesterName LIKE '" + Name + "%'";
答案 0 :(得分:0)
下面的代码使用C#创建请求的子字符串,并修改了初始的like语句,只在子字符串的前面而不是在末尾包含一个通配符。
<强>之前强>
cmd.CommandText =“SELECT * FROM Projects WHERE TesterName LIKE'”+ Name +“%'”;
之后
cmd.CommandText =“SELECT * FROM Projects WHERE TesterName LIKE'%”+ Name.Substring(6)+“'”;
答案 1 :(得分:0)
您可以使用以下语句从用户名获取姓氏。此语句将在用户名中找到索引“\”,并将字符删除到比斜杠更多的位置。我在找到的索引中添加2,因为索引从0开始。
string query = "select * from projects where name like '%" + items.Remove(0,items.IndexOf("\\")+2) + @"%'";
同时,我建议使用FirstName或LastName作为唯一键不。您应该使用UserID来执行此操作。它可能有重复的姓氏,以便可以带回错误的记录。在Case中,您无权访问userid,您应该使用UserName(例如,'ARM \ JJohnson'),因为用户名通常是唯一的。
答案 2 :(得分:0)
太棒了,在每个人的帮助下,我都能得到我需要的东西! (把它移动了一下,我也投了答案,但我不能......但是)
在我把名字拉了一次之后,我没有更改它,而是在开始时更改了它。首先我通过以下方式登录用户: string Name = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()).Identity.Name;
然后我的标签显示了用户名(也是为了查看调试的内容),我用@Gaurav Sharma的答案删除了不需要的字母:
getUser.Text = Name.Remove(0,5);
然后在我的SQL命令文本中,我只是做了:
cmd.CommandText = "SELECT * FROM Projects WHERE TesterName LIKE '" + getUser.Text + "%'";
现在,它不是显示和搜索AMR \ JJohnson,而是简单地搜索“Johnson”
希望这有助于任何人阅读!