【问题标题】:How to use like to return data also in case of empty values在空值的情况下如何使用like返回数据
【发布时间】:2021-07-30 05:52:46
【问题描述】:

我有一个SQLscript,它返回 3 个数据:ProductCategorySubcategory 我希望能够根据产品、类别和子类别从返回的列表中进行过滤。我需要始终使用过滤器中的所有三个项目。 我正在使用 Like 关键字 如果我仅用于过滤ProductType,可以看出我有很多元素,其中CategorySubcategory 为空

但是如果我也为类别和子类别添加过滤器,如果我像屏幕截图中一样添加like,我不会取回所有元素,(我认为在这种情况下我会取回相同的结果与上一个屏幕截图一样),但我得到了这个

我试过这样,

在这里,我认为我会取回 Product 名称中带有“s”和 Category 带有“b”的所有项目,因此这将是本例中的预期结果

您能否告诉我如何使用like 关键字来正确完成这项工作?谢谢!

【问题讨论】:

标签: sql sql-like


【解决方案1】:

这就是你所拥有的:

where producttype like '%S%'
  and category like '%b%' or category is null
  and subcategory like '%%' or subcategory is null

但是AND 优先于OR,所以这转化为

where (producttype like '%S%' and category like '%b%')
   or (category is null and subcategory like '%%')
   or (subcategory is null)

所以,添加括号以获得你想要的:

where producttype like '%S%'
  and (category like '%b%' or category is null)
  and (subcategory like '%%' or subcategory is null)

在混合ANDOR 时应始终使用括号。

【讨论】:

    【解决方案2】:

    我想这就是你想要的

    WHERE ProductType LIKE '%s%' AND Category LIKE '%b%'
    

    这种逻辑使您的结果错误,它使您得到具有“b”字符的类别 或为空

    Category LIKE '%b%' OR Category IS NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2015-08-03
      • 1970-01-01
      相关资源
      最近更新 更多