Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL表字段中的精确单词存在性检查_Php_Mysql_Where Clause_Sql Like - Fatal编程技术网

Php MySQL表字段中的精确单词存在性检查

Php MySQL表字段中的精确单词存在性检查,php,mysql,where-clause,sql-like,Php,Mysql,Where Clause,Sql Like,我有个问题。是否有任何内置函数或与MySQL相关的任何其他方法,它们将返回在数据库表字段中包含确切单词的行?我知道,使用类似MySQL的操作符,可以在列中搜索指定的模式,该模式将字符串值与包含通配符的模式字符串相匹配。但使用类似MySQL的子句,它也将返回子字符串条目 例如 假设3列值如下所示: 1. "Take another shot of courage" 2. "The End of This age is Not Yet" 3. "Employers can obtain this

我有个问题。是否有任何内置函数或与MySQL相关的任何其他方法,它们将返回在数据库表字段中包含确切单词的行?我知道,使用类似MySQL的操作符,可以在列中搜索指定的模式,该模式将字符串值与包含通配符的模式字符串相匹配。但使用类似MySQL的子句,它也将返回子字符串条目

例如

假设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%'
它将返回所有三行。但我的目的只是想得到第二排。我们如何做到这一点?提前谢谢

干杯,
JENSon.

使用此查询

SELECT * FROM sometable WHERE somefield LIKE '% age %' 
OR somefield LIKE 'age %' OR somefield LIKE '% age'
试试这个

  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 

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

这将匹配
年龄
,但不匹配
勇气
工资
年龄
。它还将匹配
-age-
中的年龄,或文本
年龄
非单词字符包围的任何其他行。这意味着它将在字符串的开头和结尾匹配
age

在我看来,这比有三个条件要简单一点。如果返回匹配,如<代码> -AGE-<代码>是可以接受的,那么你可以考虑这个。

我还没有测试这个查询的性能或可移植性,所以您也可能需要考虑这个问题。

SELECT * FROM sometable WHERE somefield RLIKE '[[:<:]]age[[:>:]]';

从sometable中选择*,其中somefield类似于“[[::]”;

如果age前后始终有一个空格,为什么不使用“%age%”之类的空格,在age前后放置两个空格,看看是否有效。我的意思是
%age%
阅读全文搜索,
%age%
对我来说不是解决方案。从一些表格中选择*,其中一些字段如“%age%”将适用于大多数情况,除了“age something”和“something age”@YogeshSuthar Done.)