在MySQL中,当在需要“全字匹配”的文本字段中搜索关键字时,可以使用REGEXP和[[:< ;:]]和[[:>:]]字边界标记:
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]word[[:>:]]"
例如,当我们想要查找包含“europe”的所有文本字段时,使用
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]europe[[:>:]]"
将返回“欧洲地图”,而不是“欧洲联盟”.
但是,当目标匹配单词包含“点字符”时,如“u.s.”,我该如何提交正确的查询?我尝试了以下查询,但没有一个看起来正确.
1.
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]u.s.[[:>:]]"
2.
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]u[.]s[.][[:>:]]"
3.
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]u\.s\.[[:>:]]"
当使用双反斜杠来逃避特殊字符时,正如d’alar’cop所建议的那样,它返回空,即使表中有“u.s. congress”之类的内容
SELECT name FROM tbl_name WHERE name REGEXP "[[:<:]]u\.s\.[[:>:]]"
任何建议表示赞赏!最佳答案这个正则表达式做你想要的:
SELECT nameFROM tbl_nameWHERE name REGEXP '([[:blank:][:punct:]]|^)u[.]s[.]([[:punct:][:blank:]]|$)'
这匹配美国.以下时间:
>空白(空格,标签等)
>标点符号(逗号,括号等)
>什么都没有(即在行首)
然后是:
>空白(空格,括号等)
>什么都没有(即在行尾)
查看包含上述点的边缘情况的SQLFiddle. 总结
以上是内存溢出为你收集整理的整个单词与MySQL中的点字符匹配全部内容,希望文章能够帮你解决整个单词与MySQL中的点字符匹配所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)