使用SQL根据用户输入在数据库中搜索子字符串。

10 浏览
0 Comments

使用SQL根据用户输入在数据库中搜索子字符串。

我正在进行一个大学项目,在Visual Studio 2010中使用vb.net的SQL命令在数据库中搜索用户,根据他们的名字、姓氏、电子邮件地址或技能集。所以从一开始...用户注册并包括一个技能集,这是一个单行文本框,他们输入类似"Java"、"C#"等的内容。我可以很好地搜索其他所有内容,除了如果用户具有多个技能,则无法搜索技能集。我想使用SQL命令中的"LIKE"来搜索任何内容。以下是我目前用于搜索用户的代码:

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] = @FirstName OR [SurName] = @SurName OR [EmailAddress] = @EmailAddress OR [SkillSet] LIKE '%' + @SkillSet + '%')", connection)
Dim firstnameParam As New SqlParameter("@FirstName", Me.UserSearchTextBox.Text)
Dim surnameParam As New SqlParameter("@SurName", Me.UserSearchTextBox.Text)
Dim emailParam As New SqlParameter("@EmailAddress", Me.UserSearchTextBox.Text)
Dim skillSetParam As New SqlParameter("@SkillSet", Me.UserSearchTextBox.Text)
command.Parameters.Add(firstnameParam)
command.Parameters.Add(surnameParam)
command.Parameters.Add(emailParam)
command.Parameters.Add(skillSetParam)

希望这样更清晰明了。

0
0 Comments

问题的出现原因是在SQL查询语句中缺少了一组括号。这导致用户只输入了少数字符时无法获取结果。解决方法是在查询语句中添加缺失的括号。

以下是已修复的代码示例:

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [UserID], [SkillSet] FROM [Users] WHERE ([FirstName] LIKE '%%' OR [SurName] LIKE '%%' OR [EmailAddress] LIKE '%%' OR [SkillSet] LIKE '%%')", connection)

现在,用户只需输入少数字符即可检索到匹配的子字符串。感谢大家的帮助!

0
0 Comments

问题的出现原因是用户需要在SQL数据库中根据输入的子字符串进行搜索,但是使用SQL参数在LIKE子句中不起作用。解决方法是使用"&"(在VB.NET中)或者"+"(在C#.NET中)来连接字符串"% "和参数。同时,还可以从查询中删除"%",结果仍然相同。

根据在网上搜索到的答案,我们可以使用以下代码来解决这个问题:

在VB.NET中:

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] =  OR [SurName] =  OR [EmailAddress] =  OR [SkillSet] LIKE '%' &  & '%')", connection)

或者

Dim skillSetParam As New SqlParameter("", "%" & Me.UserSearchTextBox.Text & "%")

在C#.NET中:

SqlCommand command = new SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] =  OR [SurName] =  OR [EmailAddress] =  OR [SkillSet] LIKE '%' +  + '%')", connection);

或者

SqlParameter skillSetParam = new SqlParameter("", "%" + this.UserSearchTextBox.Text + "%");

这样就可以根据用户输入的子字符串在SQL数据库中进行模糊搜索了。

0
0 Comments

搜索数据库以基于用户输入的子字符串使用SQL查询的原因是需要根据用户输入的关键词来搜索数据库中的特定字段。可能的应用场景是在用户管理系统中根据用户的姓名、电子邮件地址、技能等信息来查找符合条件的用户记录。

解决方法是使用SQL语句中的LIKE或IN关键词来实现模糊匹配或精确匹配。在示例中,使用了IN关键词来匹配技能字段。用户输入的技能关键词需要按照特定格式传递,例如'SQL','PHP','JAVA'。需要注意的是,如果数据库中的技能字段是以字符串形式存储多个技能,那么需要根据实际情况进行处理,以避免出现部分匹配或顺序不一致的情况。

对于数据库设计方面的问题,可以考虑创建一个与用户表相关联的技能表,将每个用户的技能记录存储为独立的行。然后可以通过连接查询和IN关键词来获取符合条件的用户记录。这样的设计可以更好地支持多个技能的查询,并避免了部分匹配或顺序不一致的问题。

根据用户输入的子字符串来搜索数据库是一个常见的需求,可以通过使用SQL的LIKE或IN关键词来实现。在数据库设计方面,可以考虑创建关联表来更好地支持多个条件的查询,并避免出现部分匹配或顺序不一致的问题。

0