查询“喜欢'%%'”的目的是什么?

时间:2014-01-16 19:13:35

标签: mysql sql

我的应用程序在其中一个查询中包含以下WHERE子句。

WHERE objId = 5 AND ( field1 like '%%' OR field2 like '%%' OR field3 like '%%')

使用MySQL的EXPLAIN函数,它似乎没有寻找超过必要的行(幸运的是objId上的索引过滤掉了很多行),但检查的重点是什么字段是否像%%

2 个答案:

答案 0 :(得分:8)

我的猜测是,生成此SQL的脚本在%之间有一些变量,但它们是空的,因此有一个输出%%

简单地:

$var = '';
$sql = "... field LIKE '%" . $var . "%' OR ...";

答案 1 :(得分:5)

like '%%' / like '%'是相同的空条件。 (接受除NULL以外的所有值)

背后的代码很可能是:

WHERE objId = ? AND ( field1 like '%?%' OR field2 like '%?%' OR field3 like '%?%')

你碰巧发送它没有任何实际的过滤器值..(所有过滤条件的空字符串)