如何在数据库中搜索名称的开头...或名称的末尾

时间:2017-03-10 05:42:56

标签: c# sql

我有数据库表名称,其中包含类似这样的数据

enter image description here

目前我正在这样做

con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand("SELECT full_name from name where name like '%" +      textBox3.Text + "' order by name", con);

rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

dataGridView1.Rows.Clear();
while (rdr.Read() == true)
{

    dataGridView1.Rows.Add(rdr[0]);


}
con.Close();

现在,我想搜索以mark或Michelle开头的名字......

1 个答案:

答案 0 :(得分:0)

如果您希望LIKE适用于该名称的任何部分,则需要将%放在两边;如果你真的只想要开始或结束(但不是中间),你应该做LIKE '%search' or LIKE 'search%'

无论哪种方式,你真的应该参数化你的SQL查询以避免SQL注入,并将SqlConnectionSqlDataReader包装在using块中,以确保它被正确处理掉发生异常,例如:

using (var con = new SqlConnection(cs.DBConn))
{
    con.Open();
    cmd = new SqlCommand("SELECT full_name from name where name like '%' + @p0 OR name LIKE @p0 + '%' order by name", con); 
    // or perhaps just "where name like '%' + @p0 + '%' order by name"
    cmd.Parameters.AddWithValue("@p0", textBox3.Text);
    using (var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
    {
        dataGridView1.Rows.Clear();
        while (rdr.Read() == true)
        {
            dataGridView1.Rows.Add(rdr[0]);    
        }
    }
}

最后,请注意,如果您的文本框为空白,则会匹配表格中的所有行...