如何在MySQL中的instr()中应用通配符?

时间:2009-12-15 04:13:51

标签: php sql mysql wildcard

使用通配符,以便匹配所有记录。

我的代码:

if(empty($tag))
{
$tag="%";
}

mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());

但它返回零结果。 即使

 if(empty($tag))
    {
    $tag="*";
    }

它仍然返回零结果。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

INSTR不支持通配符。

如果要在MySQL查询中使用通配符,则必须使用支持它的函数,例如LIKEREGEXP,即:

mysql_query("select * from mytable where tag LIKE '%$tag%'")

上述查询适用于$tag的任何值。空值(空字符串)将返回所有记录。请务必正确清理$tag值。

答案 1 :(得分:0)

首先,instr(及其对应的locate)不识别通配符或任何其他特殊的仅表达式文字字符串。处理此问题的常用方法是相应地修改SQL:

if (empty($tag))
     $whereclause = "";  // match all records
else $whereclause = "where instr(tag, '$tag') > 0";

mysql_query("select * from mytable $whereclause") or die(mysql_error());