多个LIKE或MySql查询匹配

时间:2011-11-16 01:42:44

标签: mysql sql

搜索:'chemist'

问题:查询将匹配像'onechemist'而不是'chemist'的字符串。

SELECT id,name FROM `records` 
WHERE name LIKE '%". mysql_real_escape_string($q) ."%' 

此替代尝试不起作用:

SELECT id,name FROM `records` 
WHERE name LIKE '%". mysql_real_escape_string($q) ."%'  
OR name LIKE '". mysql_real_escape_string($q) ."%' 
OR name LIKE '%". mysql_real_escape_string($q) ."'

我如何将上述内容编译成一个单一的查询,该查询将匹配任何具有字符串的字段或将查询优化为更好的表达式?

2 个答案:

答案 0 :(得分:1)

如果$q持有'化学家',它将匹配同时也是'化学家'的name。在这种情况下,您的第一个查询应该工作。尝试仔细检查你的价值观。

$sql = "SELECT `id`, `name` FROM `records` 
WHERE `name` LIKE '%".mysql_real_escape_string($q)."%'";

PS - 您的第二个查询将获得与第一个查询相同的结果。

答案 1 :(得分:0)

您可以使用正则表达式。例如,

SELECT id,name FROM `records` where name REGEXP '^onechemist'  

它会将名称以 onechemist

匹配