我有一个查询。是否有任何内置函数或与MySQL相关的任何其他方法,它将返回包含数据库表字段中的EXACT字的行?我知道使用MySQL LIKE运算符,您可以在列中搜索指定的模式,该模式将字符串值与包含通配符的模式字符串相匹配。但是使用MySQL LIKE子句,它也将返回子字符串条目。
EG。
假设3个列值如下所示:
1. "Take another shot of courage"
2. "The End of This age is Not Yet"
3. "Employers can obtain this wage rate by submitting a request"
我想检索列值包含确切单词'age'
的所有行如果我们准备这样的查询
SELECT * FROM sometable WHERE somefield LIKE '%age%'
它将返回所有三行。但我的目的只是获得第二排。我们如何实现这一目标?在此先感谢。
干杯,
简森。的
答案 0 :(得分:6)
使用此查询
SELECT * FROM sometable WHERE somefield LIKE '% age %'
OR somefield LIKE 'age %' OR somefield LIKE '% age'
答案 1 :(得分:5)
您可以使用MySQL的正则表达式引擎并匹配单词边界字符[[:<:]]
和[[:>:]]
这将匹配age
但不匹配courage
或wage
或aged
。它还会与-age-
中的年龄或文字age
被非单词字符包围的任何其他行匹配。这意味着它将匹配字符串开头和结尾的age
。
在我看来,阅读比有三个条件要简单一点。如果可以接受-age-
之类的返回匹配,那么您可以考虑这一点。
我还没有测试过这个查询的性能或可移植性,所以你可能也想考虑一下。
SELECT * FROM sometable WHERE somefield RLIKE '[[:<:]]age[[:>:]]';
答案 2 :(得分:2)
试试这个
1 SELECT * FROM sometable WHERE somefield LIKE '% age %' to search in middle of string
2 SELECT * FROM sometable WHERE somefield LIKE '% age' if word is at end of string
3 SELECT * FROM sometable WHERE somefield LIKE 'age %' if your word is at starting of the string