我有一个包含以下数据的员工表
Id Name
1 Yogesh
2 Darshan
3 Haresh
4 Ramesh
5 Suresh
6 Ashvin
我想从员工表中搜索姓名。 我的查询是
SELECT Name FROM Client_Master WHERE Name LIKE'%" + txtname.text + "%'";
现在我在文本框中搜索A然后它首先显示Darshan,Haresh ..在Ashvin之前..
我的问题是,如果我在文本框上按A,那么首先记录sholud是Ashin,而不是Darshan,Haresh,......会来......
所以请建议我查询一下。
答案 0 :(得分:0)
使用参数化查询来避免SQL注入。
如果您想按名称订购,请添加ORDER BY ID
。
var cmd = new SqlCommand("SELECT Name FROM Client_Master WHERE Name LIKE'%' + @name +'%' ORDER BY Name");
cmd.Parameters.Add("@name ", txtname.text);
答案 1 :(得分:0)
当涉及到查询时,它们(大部分)将(大部分)完全按照您指定的方式返回数据,但会根据物理数据在表中的排序方式进行排序(通常使用聚簇索引)。
在您的情况下,我不认为您添加了聚簇索引,这可能意味着数据存储在堆中。这基本上意味着SQL Server将以不可预测的方式返回数据。现在返回数据的顺序可能会在将来发生变化,这意味着您最终可能会抱怨用户可能会抱怨数据正在关闭" off"。
如果您希望在排序顺序上获得可预测的结果,请始终使用ORDER BY
子句。
在您的情况下,这将是要使用的完整查询:
SELECT
Name
FROM
Client_Master
WHERE
Name LIKE'%" + txtname.text + "%'"
ORDER BY
NAME ASC;
在这种情况下,ASC
提示结果应按升序(A-Z)顺序排序。如果您想以相反的方式完成它(Z-A),请使用DESC
代替ASC
。