-1

ここで、like ステートメントを使用して db からデータを選択しようとしましたが、データの 1 桁目で検索されます。しかし、データの最初の 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

キャストまたは変換を使用して数値を攪拌に変換する必要がある数値に対して同様の操作を行うことはできません...

編集

部分文字列関数を使用して、最初の 3 文字または列のデータをスキップすることもできます

 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 の 1 文字で一致させることができるため、コードで行ったように 3 つの「_」を記述する必要があります。

また、SQL インジェクション攻撃を回避するために、SQL パラメータを使用してコードを変更します。

于 2012-06-04T11:22:54.007 に答える