提问者:小点点

MySQL 8+正则表达式字边界


我想在一个单词的开头或结尾搜索术语'ed',下面的SQL语句只匹配一个精确的单词匹配。

SELECT * FROM ul_product
where productname REGEXP '\\bed\\b'

如果我执行以下操作,则会得到以下结果:ed位于单词的开头或结尾

SELECT * FROM ul_product
where productname REGEXP '(\\bed)|(ed\\b)'

这是应该的工作方式吗?

对词界的描述和网上的例子使我相信语句1会产生语句2的结果。

我可以使用我所创建的语句来进行“精确”和“部分”匹配,但这样做对吗?


共1个答案

匿名用户

正则表达式'\\bed\\b'搜索被单词边界包围的'ed',换句话说,它搜索单词'ed'

在另一端,regex:'(\\bed)(ed\\b)'搜索'\\bed''ed\\b'(管道字符代表正则表达式中的“或”)。 所以它在'ed'上匹配在单词的开头或结尾--这似乎是你想要的。

注意这里不需要括号。 您可以这样写:

where productname REGEXP '\\bed|ed\\b'