我正在为我的C#类完成这项任务: 员工搜索创建一个连接到您在编程问题1中创建的Personnel.mdf数据库的应用程序。应用程序的表单应显示DataGridView控件中的Employee表。应用程序应让用户在文本框中指定名称,然后在Employee表中搜索该名称。应用程序应显示包含指定名称的完全匹配或部分匹配的任何行。
我遇到的问题是让应用程序显示包含指定名称的完全匹配或部分匹配的任何行。
以下是我的SQL SELECT语句的内容:
SELECT EmployeeID, Name, Position, [Hourly Pay Rate]
FROM Employee
WHERE Name LIKE '%' + @name + '%'
以下是searchButton的表单中的代码:
private void searchButton_Click(object sender, EventArgs e)
{
this.employeeTableAdapter.NameSearch
(this.personnelDataSet.Employee, searchNameTextBox.Text);
}
在我的表中,例如,我有Michelle Wilcox和Michael Gleason,当我在应用程序的文本框中键入Mich并单击搜索时,我没有得到任何值。我期待在表格中看到这两行。 另外,如果我只是输入名字迈克尔,则不会返回任何内容。我返回行的唯一一次是输入确切的全名。
有关我应该在哪些方面纠正该计划的任何建议?
答案 0 :(得分:0)
我会查看SQL Server在后端使用的排序规则,更多信息请点击此处 - https://support.microsoft.com/en-us/kb/322112
我提出这个原因的原因是" LIKE比较受到整理的影响"正如此处所讨论的那样 - https://msdn.microsoft.com/en-us/library/ms179859.aspx
将SELECT语句更改为以下内容可能证明这一点:
SELECT EmployeeID, Name, Position, [Hourly Pay Rate]
FROM Employee WHERE Name
LIKE '%' + @name + '%'
OR LIKE @name + '%'