sql - 如何显示匹配的 WHERE 条件?
问题描述
这是我正在尝试做的事情:
SELECT
id, text, the_match
FROM
comments
WHERE
(lower(text) LIKE '%excellent%'
OR lower(text) LIKE '%great%'
OR lower(text) LIKE '%good%') AS the_match
ORDER BY len(text) ASC
SQL 无效。the_match
不是有效的列。我试图显示WHERE
子句中的哪个条件导致匹配。我怎样才能做到这一点?
解决方案
你可以使用一个CASE
表达式:
SELECT
id,
text,
CASE WHEN LOWER(text) LIKE '%excellent%' THEN 'excellent'
WHEN LOWER(text) LIKE '%great%' THEN 'great'
WHEN LOWER(text) LIKE '%good%' THEN 'good' END the_match
FROM comments
WHERE
LOWER(text) LIKE '%excellent%' OR
LOWER(text) LIKE '%great%' OR
LOWER(text) LIKE '%good%'
ORDER BY
LEN(text);
如果您想要为comments
表中的每条记录添加一个标签,则只需删除该WHERE
子句。在这种情况下,该the_match
字段将NULL
用于不匹配的记录。
推荐阅读
- android - 当片段在选项卡式活动中更改时,在片段中运行双计时器
- r - 在 R Shiny 中打印 R optim 函数输出
- jquery - 我可以用真实的信用卡测试贝宝沙盒吗?
- vba - Excel VBA 宏无法按预期工作
- ios - iOS Swift CollectionView 单元正在缩减
- f# - 具有至少一个元素的 F# 序列
- reactjs - Webpack 服务示例
- java - 编写时 XSSFWorkbook 使用 JDBC 在 Spring Boot 应用程序中创建损坏的 .xlsx 文档
- c# - 如何在 wpf 应用程序上使用 DictationRecognizer()?
- windows - 通过命令刷新 Internet 选项