【问题标题】:SQL multiple search in where clause在where子句中的SQL多重搜索
【发布时间】:2018-09-13 15:56:47
【问题描述】:

在 where 子句中使用多重搜索需要帮助:

尝试编写一个查询,该查询将返回“已关闭完成”、“已关闭未完成”、“已关闭已跳过”的工单,并排除列中包含项目的行,但如果包含投影仪、ms 项目、项目,则不应排除2016,投影仪

这是我目前的查询:

请让我知道我在这里做错了什么

Select 
CONCAT(YEAR(a.[closed_at]),'-',DATENAME(MONTH,a.[closed_at])) as [Year_Month],
a.[Number],
a.[closed_at],
b.[Region], 
b.[Tower_Name],
a.[Short_description],
a.[description]
from [dbo].[sc_task_master_data] a
right join [dbo].[Master_Assignee_list] b
on a.[assignment_group]=b.Assignee_Group_Name
where a.[state] IN ('Closed Complete','Closed Incomplete','Closed Skipped')
and a.[short_description] not like '%project%'
and a.[short_description] like '%project 2%'
and a.[short_description] like '%MS Project%'
and a.[short_description] like '%PROJECT 20%'
and a.[short_description] like '%project installation%'
and a.[short_description] like '%Microsoft Project%'
and a.[short_description] like '%Projector%'
and a.[number] in ('SCTASK0050503',  'SCTASK0050510','SCTASK0051162')

谢谢!

【问题讨论】:

  • 您将需要使用 OR 而不是 AND 作为 short_description。一次不能有多个值。还有...sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/…
  • @SeanLange 我试过了;但随后它返回不在 ('Closed Complete','Closed Incomplete','Closed Skipped') 中的行
  • 正如 Sean Lange 所说,对于 short_description,您需要使用 OR 而不是 AND,但您可以将这些括在括号内以便将 AND 它们与您的其他子句一起使用

标签: sql-server wildcard where-clause


【解决方案1】:

您的WHERE 子句仅包含ANDs,这意味着之前和之后的条件必须匹配。

您可以修改语句以包含括号,该括号有效地将子句组合在一起以获得单一的逻辑结果,例如:

where a.[state] IN ('Closed Complete','Closed Incomplete','Closed Skipped')
and (a.[short_description] not like '%project%'
or a.[short_description] like '%project 2%'
or a.[short_description] like '%MS Project%'
or a.[short_description] like '%PROJECT 20%'
or a.[short_description] like '%project installation%'
or a.[short_description] like '%Microsoft Project%'
or a.[short_description] like '%Projector%')
and a.[number] in ('SCTASK0050503',  'SCTASK0050510','SCTASK0051162')

注意第二行和倒数第二行中的括号,它将这些子句组合在一起,因此如果 其中任何一个为真,则该子句为真。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2021-12-06
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2022-11-19
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多