【问题标题】:Structuring Like Query in mySQL & VB.Net在 mySQL 和 VB.Net 中构建类似查询
【发布时间】:2016-07-01 03:55:32
【问题描述】:

我有 ListView 和多个过滤器作为 checkboxList。一切正常,但 Like 子句不正常。如下图

select * from products where  category Like '% Apparels, Bluetooth%'

但应该是这样的

select * from products where  category Like '% Apparels%' or category Like '%Bluetooth%'

如何更改代码以正确构建查询?

Public Function buildWhereClause() As String
        Dim constr As String = ConfigurationManager.ConnectionStrings("conio").ConnectionString
        Dim query As String = "select * from products"
        Dim joiner As String = " "
    Dim condition As String = String.Empty
    Dim priceCondition As String = String.Empty

    For i = 0 To priceFilter.Items.Count - 1
        If priceFilter.Items(i).Selected Then
            Dim price As String = priceFilter.Items(i).ToString
            priceCondition = String.Concat(priceCondition, joiner, String.Format("'{0}'", price))
            If joiner = " " Then joiner = ", "
        End If
    Next

    Dim categoryCondition As String = String.Empty
    joiner = " "

    For i = 0 To categoryFilter.Items.Count - 1
        If categoryFilter.Items(i).Selected Then
            Dim category As String = categoryFilter.Items(i).ToString
            categoryCondition = String.Concat(categoryCondition, joiner, String.Format("{0}", category))
            If joiner = " " Then joiner = ", "
        End If
    Next

    Dim whereClause As String = String.Empty
    joiner = " where "
    If Not String.IsNullOrEmpty(priceCondition) Then
        whereClause = String.Concat(whereClause, joiner, String.Format(" price_range IN ({0})", priceCondition)) ' and sub_category IN ({0})", condition.Substring(0, condition.Length - 1))
        joiner = " and "
    End If

    If Not String.IsNullOrEmpty(categoryCondition) Then
        whereClause = String.Concat(whereClause, joiner, String.Format(" category Like '%{0}%'", categoryCondition))
        joiner = " and "
    End If

    'If Not String.IsNullOrEmpty(brandCondition) Then
    '    whereClause = String.Concat(whereClause, joiner, String.Format(" sub_category in ({0})", categoryCondition))
    '    joiner = " and "
    'End If

    Dim masterClause As String = String.Empty
    masterClause = (query & whereClause)
End Sub

【问题讨论】:

  • 那么,您目前面临的困难是什么?您得到的最终查询是什么?
  • @un-lucky 请在我的帖子开头看到我提到的第一个查询是我的代码得到的。第二个查询是我真正想要的。你能帮我用我的代码建立第二个查询吗?
  • 您没有回答我的任何问题,您当前代码面临的困难是什么,您为query 获得的当前价值是多少
  • @un-lucky 这是我得到的输出查询。 select * from products where category Like '% Apparels, Bluetooth%'
  • 我已经在下面发布了答案你试过了吗?你可以吗?

标签: mysql asp.net vb.net listview


【解决方案1】:

所以你通过循环categoryFilter.Items 得到categoryCondition="Apparels, Bluetooth" 你可以在这里做的是用%' or category Like '% 替换, 然后一切都会很酷。考虑以下几点:

If Not String.IsNullOrEmpty(categoryCondition) Then
    whereClause = String.Concat(whereClause, joiner, String.Format("category Like '%{0}%'", categoryCondition.Replace(",","%' or category Like '%"))       
End If

【讨论】:

  • @SUN : Cool 很高兴为您提供帮助
猜你喜欢
  • 2021-05-28
  • 1970-01-01
  • 2012-10-19
  • 2021-11-20
  • 2020-06-03
  • 2014-11-04
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多