【问题标题】:SQL Query - Return rows where based on dual conditioning of same columnSQL 查询 - 返回基于同一列的双重条件的行
【发布时间】:2021-06-01 03:36:33
【问题描述】:

我正在努力解决这个问题。我有一列“Column1”,它是 VARCHAR(max) 并且包含很多原始文本。除非满足次要条件,否则我想根据该列中没有特定单词的列过滤掉行。

例如:

返回不存在单词“Final”的所有行。但是,如果“Final”这个词不存在但“Ongoing”这个词确实存在,那么我需要返回这一行而不是隐藏它。

这是我的代码(不工作)

SELECT *
FROM ThisTable
WHERE (
        Column1 NOT LIKE '%Final%'
        OR Column1 LIKE '%Ongoing%'
        )

以下是一些存在的数据示例,以及是否应返回该行。

Row 1: "this project has ended" (return this row)
Row 2: "this project has ended but is ongoing" (return this row)
Row 3: "this project is final." (do not return this row)
Row 4: "This project is final and ongoing" (return this row)

【问题讨论】:

    标签: sql tsql


    【解决方案1】:

    您当前的查询正在过滤掉既不包含“最终”也不包含正在进行的记录,但据我了解,您希望返回除包含“最终”但不包含“正在进行”的记录之外的所有内容。 我认为这样的事情应该可行:

    WHERE NOT (Column1 LIKE '%Final%' AND Column1 NOT LIKE '%Ongoing%')
    
    

    【讨论】:

    • 这是我最初的查询。它不能正常工作,因为它只查找不包含 final 但包含正在进行的行。会有一些行没有最终的,也没有正在进行的。
    • 那些应该由这个查询返回 - NOT 意味着它只排除同时满足两个条件的地方。
    • 这行得通。您对“AND”荣誉的看法是正确的
    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多