-1

在这里,我尝试使用 like 语句从 db 中选择一个数据,但它使用我的数据的第一个数字进行搜索。但我需要编写代码,比如搜索而不是我数据的前 3 位。谁能帮我。

public void CC()
        {
            CCddl.Items.Clear();
            ListItem l = new ListItem();
            l.Text = "-Select-";
            CCddl.Items.Add(l);
            CCddl.SelectedIndex = 0;
            con.Open();
            SqlCommand cmd = new SqlCommand("select Componetcode from dbo.tbl_component where Sitecode like '%" + TextBox1.Text + "%'", con);
            SqlDataReader dr1;
            dr1 = cmd.ExecuteReader();
            while (dr1.Read())
            {
                ListItem n = new ListItem();
                n.Text = dr1["Componetcode"].ToString().Trim();
                CCddl.Items.Add(n);
            }
            dr1.Close();
            con.Close();
        }
4

1 回答 1

1

您不能对需要使用 cast 或 convert 将数字转换为搅拌的数字进行类似操作...

编辑

您还可以使用子字符串函数跳过前三个字符或列中的数据

 select * from (
    select column1,cast(column2 as varchar(30)) as column2  from tablename 
  ) d  where 
    substring(column2,4, LEN(column2) - 3 )  like '%textosearch%'

你需要写下

select * from tablename where column like '___textosearch%'

所以你的代码将是

  SqlCommand cmd = new SqlCommand("select Componetcode from dbo.tbl_component
         where Sitecode like '___" + TextBox1.Text + "%'", con); 

_ 允许您匹配 sql 中的单个字符,因此您需要像我在代码中所做的那样写三个“_”

还使用 sql 参数修改您的代码,以避免 SQL 注入攻击

于 2012-06-04T11:22:54.007 回答