3

我有一个查询。是否有任何与 MySQL 相关的内置函数或任何其他方法,它将返回在数据库表字段中包含 EXACT 单词的行?我知道使用 MySQL LIKE 运算符,您可以在将字符串值与包含通配符的模式字符串匹配的列中搜索指定的模式。但是使用 MySQL LIKE 子句,它也会返回子字符串条目。

例如。

假设 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"

我想检索列值包含确切单词“年龄”的所有行

如果我们准备这样的查询

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

它将返回所有三行。但我的意图只是获得第二排。我们如何实现这一目标?提前致谢。

干杯,
简森。

4

3 回答 3

6

使用此查询

SELECT * FROM sometable WHERE somefield LIKE '% age %' 
OR somefield LIKE 'age %' OR somefield LIKE '% age'
于 2013-04-05T10:46:58.393 回答
6

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

这将匹配age但不匹配courageor wageor aged。它还将匹配文本被非单词字符包围的-age-任何其他行中的年龄。这意味着它将在字符串的开头和结尾匹配。ageage

在我看来,这比具有三个条件要简单一些。如果返回匹配项-age-是可以接受的,那么您可以考虑这一点。

我也没有测试过这个查询的性能或可移植性,所以你可能也想考虑一下。

SELECT * FROM sometable WHERE somefield RLIKE '[[:<:]]age[[:>:]]';
于 2013-04-05T11:01:10.113 回答
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 
于 2013-04-05T10:55:25.457 回答