gpt4 book ai didi

mysql - 反转 IN 功能

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:49 30 4
gpt4 key购买 nike

考虑下表团队消息:

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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com