当前位置:  开发笔记 > 编程语言 > 正文

在MySQL中搜索"全字匹配"

如何解决《在MySQL中搜索"全字匹配"》经验,为你挑选了3个好方法。

我想写一个SQL查询,在文本字段中搜索关键字,但只有当它是"全字匹配"时(例如,当我搜索"rid"时,它不应该匹配"arid",但它应该匹配"一个摆脱".

我正在使用MySQL.

幸运的是,性能在这个应用程序中并不重要,数据库大小和字符串大小都很小,但我更喜欢在SQL中而不是在PHP中驱动它.



1> LukeH..:

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

SELECT *
FROM table 
WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'


只需注意,必须转义使用正则表达式特殊字符的字符串.
只是在mysql查询中使用php变量的注释:''[[:::]]“。$ rid。” [[:>:]]'`

2> Ricky Boyce..:

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

更换..

SELECT *
FROM table 
WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'

有了这个..

SELECT *
FROM table 
WHERE keywords REGEXP '([[:blank:][:punct:]]|^)rid([[:blank:][:punct:]]|$)'

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



3> paxdiablo..:

您可以使用like通配符标记来捕获可能性(在开始,结束,中间和单独出现时),如下所示就足够了:

选择blah blah blah,其中“ rid%”之类的列或“%rid”之类的列,或“%rid%”之类的列或column =“ rid”


我认为查询还不够。诸如“ rid”或“(rid)”之类的文本呢?
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有