Php MySQL表字段中的精确单词存在性检查
我有个问题。是否有任何内置函数或与MySQL相关的任何其他方法,它们将返回在数据库表字段中包含确切单词的行?我知道,使用类似MySQL的操作符,可以在列中搜索指定的模式,该模式将字符串值与包含通配符的模式字符串相匹配。但使用类似MySQL的子句,它也将返回子字符串条目 例如 假设3列值如下所示: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
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.)