如何在 MySQL 的 instr() 中应用通配符?
使用通配符以便匹配所有记录。
我的代码:
if(empty($tag))
{
$tag="%";
}
mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());
但它返回零结果。 即使
if(empty($tag))
{
$tag="*";
}
它仍然返回零结果。如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
INSTR
不支持通配符。如果要在 MySQL 查询中使用通配符,则必须使用支持它的函数,例如 LIKE 或 REGEXP,即:
上述查询适用于
$tag
的任何值。空白值(空字符串)将返回所有记录。确保您也正确清理了您的$tag
值。INSTR
does not support wildcards.If you want to use wildcards in a MySQL query, you'll have to use a function that supports it, such as LIKE or REGEXP, ie:
The above query will work for any value of
$tag
. A blank value (empty string) will return all records. Be sure you properly sanitize your$tag
value as well.首先,
instr
(及其对应的locate
)不能识别通配符或任何其他特殊表达式,只能识别文字字符串。处理这个问题的通常方法是相应地修改 SQL:First of all,
instr
(and its counterpartlocate
) do not recognize wildcards or any other special expression—only literal strings. The usual way to handle this is to modify the SQL accordingly: