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 的结果。

我可以按原样使用我创建的语句进行"精确"和"部分"匹配,但这是对的吗?

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

另一方面,正则表达式:'(\bed)|(ed\b)'搜索'\bed''ed\b'(管道字符在正则表达式中代表"or"(。因此,它在单词开头单词末尾的'ed'匹配 - 这似乎是您想要的。

请注意,此处不需要括号。你可以把它写成:

where productname REGEXP '\bed|ed\b'

最新更新