sql - SQL 查询 - 返回基于同一列的双重条件的行
问题描述
我正在努力解决这个问题。我有一列“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)
解决方案
您当前的查询正在过滤掉既不包含“最终”也不包含正在进行的记录,但据我了解,您希望返回除包含“最终”但不包含“正在进行”的记录之外的所有内容。我认为这样的事情应该有效:
WHERE NOT (Column1 LIKE '%Final%' AND Column1 NOT LIKE '%Ongoing%')
推荐阅读
- javascript - 如何在 Blazor 组件中使用 jQuery UI
- python - 无法从输入中导入协议
- c# - Azure Cosmos MongoDB - 使用分片键创建集合
- android - Autostart permission programmatically
- excel - Excel Countif 函数选择离散的单元格范围
- ruby-on-rails - 使用carrierwave-video 上传.MOV 文件?
- javascript - 做前端 2 年了,仍然不确定何时/如何使用类
- activemq-artemis - JMS 主题订阅者在未连接时不会收到消息
- android - 如何在不使用任何构建工具的情况下使用 aapt2 编译 Android 应用程序?
- php - 是否可以在 PHP MYSQL 中存储可点击的图像?