- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
考虑下表团队消息
:
15:10 | Peter | I'm off to the store, call my mobile phone if you need me.
15:11 | Susy | Have you seen the new scanner? It's lightning fast.
15:15 | Anne | We have an emergency here, John broke the tap! Please switch off the water supply!
15:15 | John | I did what?? :-D I'm in Vienna!
15:16 | Peter | I'm stuck in the elevator, help!
15:17 | Anne | I said WATER, not POWER supply!
当我想从那个困惑的自由文本中SELECT
紧急消息时,包含诸如“help”或“emergency”之类的关键字,我必须有一个“reverse IN”功能,它不会't 检查字段是否在给定的备选列表中(WHERE APPLECOLOR IN ('YELLOW', 'RED')
)但是检查给定备选项的值是否在字段中(WHERE freetext REVERSE_IN('帮助','紧急')
)。
我尝试过像WHERE freetext LIKE ('%help%' OR '%emergency%')
这样的结构,但这给了我空的结果。
说明:我可以使用freetext LIKE ... OR freetext LIKE ... OR freetext LIKE ...
来做到这一点,但它变得很长。所以我只是在寻找像 IN
这样的简写形式是“相反的情况”(APPLECOLOR = 'RED' OR APPLECOLOR = 'YELLOW'
<=> APPLECOLOR在('RED','YELLOW')
)。
最佳答案
原始查询的正确形式是:
WHERE freetext LIKE '%help%' OR freetext LIKE '%emergency%'
但是您可能还想考虑使用 MATCH
.为此,您需要在 message
列上有一个 FULLTEXT
索引,您可以使用以下命令添加该索引:
ALTER TABLE teammessages ADD FULLTEXT INDEX(message);
然后您可以使用如下查询进行搜索:
SELECT *
FROM teammessages
WHERE MATCH(message) AGAINST('help emergency' IN BOOLEAN MODE)
这会比 LIKE
给你更好的结果,它也可以匹配像 'whelp' 或 'helpful' 或 'helps' 这样的词。在您的示例表中,此查询返回:
time name message
15:15:00 Anne We have an emergency here, John broke the tap! Please switch off the water supply!
15:16:00 Peter I'm stuck in the elevator, help!
此查询还有一个优点,即不会像多个 LIKE
那样快
关于mysql - 反转 IN 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444663/
我是一名优秀的程序员,十分优秀!