为了账号安全,请及时绑定邮箱和手机立即绑定

在MySQL中搜索“全字匹配”

在MySQL中搜索“全字匹配”

摇曳的蔷薇 2019-09-02 08:27:00
我想写一个SQL查询,在文本字段中搜索关键字,但只有当它是“全字匹配”时(例如,当我搜索“rid”时,它不应该匹配“arid”,但它应该匹配“一个摆脱”。我正在使用MySQL。幸运的是,性能在这个应用程序中并不重要,数据库大小和字符串大小都很小,但我更喜欢在SQL中而不是在PHP中驱动它。
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您可以使用REGEXP和[[:<:]]和[[:>:]]字边界标记:


SELECT *

FROM table 

WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'


查看完整回答
反对 回复 2019-09-02
?
12345678_0001

TA贡献1802条经验 获得超5个赞

找到一个答案来防止经典单词边界[[::<::]]与特殊字符冲突,例如。@#$%^&*


更换..


SELECT *

FROM table 

WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'

有了这个..


SELECT *

FROM table 

WHERE keywords REGEXP '([[:blank:][:punct:]]|^)rid([[:blank:][:punct:]]|$)'

后者匹配(空格,制表符等)|| (逗号,括号等)|| 开始/结束。更“完成”的单词边界匹配。


查看完整回答
反对 回复 2019-09-02
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您可以使用like通配符标记来捕获可能性(在开始,结束,中间和单独),这样的事情就足够了:


选择blah blah blah,像'rid%'这样的列或像'%rid'这样的列或像'%rid%'或column ='rid'这样的列


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 649 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信