MySQL确切的单词存在检查表字段

时间:2013-04-05 10:43:54

标签: php mysql where-clause sql-like

我有一个查询。是否有任何内置函数或与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%'

它将返回所有三行。但我的目的只是获得第二排。我们如何实现这一目标?在此先感谢。

干杯,
简森。

3 个答案:

答案 0 :(得分:6)

使用此查询

SELECT * FROM sometable WHERE somefield LIKE '% age %' 
OR somefield LIKE 'age %' OR somefield LIKE '% age'

答案 1 :(得分:5)

您可以使用MySQL的正则表达式引擎并匹配单词边界字符[[:<:]][[:>:]]

这将匹配age但不匹配couragewageaged。它还会与-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