【问题标题】:Adding '% into SQL Command在 SQL 命令中添加 '%
【发布时间】:2020-11-03 00:14:40
【问题描述】:

我有一个我想运行的 SQL 查询抛出我的 asp.net (WebForms) 项目 查询是:

SELECT COUNT([order]) FROM menu_orders_Finished
WHERE [order] LIKE '%EXAMPLE%' 

我想做的是

con.Close();
            con.Open();
            cmd = new SqlCommand("select * from menu",con);
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            Series series = Chart2.Series["Series2"];
            while (dr.Read())
            {
                search = new SqlCommand("SELECT COUNT([order]) FROM menu_orders_Finished WHERE [order] LIKE '%@order@%'", con);
                search.Parameters.AddWithValue("@order", dr["name"].ToString());
                int count = Convert.ToInt32(search.ExecuteScalar());
                Label3.Visible = true;
                Label3.Text += count.ToString() + "+";
            }
            con.Close();

这基本上是在计算我的订单中有多少次我的菜单项(我想制作最畅销餐点的图表)

然后将其添加到图表中(但我将其删除只是为了看看我首先得到了什么)

【问题讨论】:

  • concat('%',@order,'%') 应该可以工作。如果你愿意,你也可以使用 '%' + @order + '%'。但有两个未解决的问题。名字可能是保留字,所以使用 [name],如果 name 为 null 会发生什么?您应该使用检查 null 来包装 if/then 并跳过行搜索。 (或将 [name] is not null 添加到驱动循环的主查询中。所以我不认为 concat() 失败,但 null 值会炸毁它,并且还使用 [name] 代替 name
  • 不要使用addwithvalue。养成良好的编码习惯。

标签: asp.net sql-server charts sqlcommand


【解决方案1】:

我想你想要字符串连接:

search = new SqlCommand("SELECT COUNT([order]) FROM menu_orders_Finished WHERE [order] LIKE CONCAT('%', @order, '%')", con);

【讨论】:

  • 这应该可以。您收到什么错误消息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2012-07-03
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2015-01-30
相关资源
最近更新 更多