mysql 8+regex单词边界

vybvopom  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(389)

我想在一个词的开头或结尾搜索“ed”,下面的sql语句只匹配一个完全匹配的词。

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

如果我做了下面的操作,就会得到ed在单词开头或结尾的结果

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

应该是这样的吗?
网上对单词边界和示例的描述使我相信语句1会产生语句2的结果。
我可以按原样使用我创建的语句进行“精确”和“部分”匹配,但这是对的吗?

wwtsj6pe

wwtsj6pe1#

正则表达式 '\\bed\\b' 搜索 'ed' 被单词边界包围-换句话说,它搜索单词 'ed' .
另一方面,正则表达式: '(\\bed)|(ed\\b)' 搜索其中一个 '\\bed' 或者 'ed\\b' (管道字符在regex中代表“or”)。所以它是匹配的 'ed' 在一个词的开头或结尾-这似乎是你想要的。
注意这里不需要括号。你可以这样写:

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

相关问题