gpt4 book ai didi

mysql - 匹配包含多个单词的正则表达式

转载 作者:行者123 更新时间:2023-11-29 16:23:48 24 4
gpt4 key购买 nike

我应该在 MySQL 中使用什么方法来将两个或多个字符串与列匹配?

我有一列string,其中包含appleorangelemon等关键字。我需要的是使用正则表达式搜索包含 appleorange 的行,命令如下:

where string regexp '(apple|orange)' and fruit = 1

上面的命令将违反规则,如果包含水果 1 的行只有 apple 它不应该包含在结果中,因为水果 1 code> 没有包含 orange 的另一行。

最佳答案

如果您想在(且仅当)string 包含“apple”和“orange”时成功,那么最好的方法是使用 FULLTEXT(string)

WHERE MATCH(string) AGAINST("+apple +orange" IN BOOLEAN MODE)

这也将匹配“橙色苹果”和其他一些变体。全文有一些注意事项,例如仅处理“单词”而不处理短单词。但如果限制没问题,这将比 LIKEREGEXP 快得多。

如果全文不起作用,那么最好是这样的:

WHERE string LIKE '%apple%'
AND string LIKE '%orange%'

或者可以使用REGEXP来完成:

WHERE string REGEXP '(apple.*orange)|(orange.*apple)'

如果您需要遵守单词边界和/或允许复数,请将其添加到您的规范中;这些建议的解决方案可能需要更改。例如,将 .* 更改为 .+ 将拒绝“appleorange”,但仍允许“apple/orange”。

关于mysql - 匹配包含多个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384828/

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