我想在单词的开头或结尾搜索术语"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'