我想在一个单词的开头或结尾搜索术语'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'
。
在另一端,regex:'(\\bed)(ed\\b)'
搜索'\\bed'
或'ed\\b'
(管道字符代表正则表达式中的“或”)。 所以它在'ed'
上匹配在单词的开头或结尾--这似乎是你想要的。
注意这里不需要括号。 您可以这样写:
where productname REGEXP '\\bed|ed\\b'