MySQL LIKE /全字符串检查

时间:2014-05-18 23:57:29

标签: mysql

我有一张桌子可以保存一些用户代理,如Mozilla,Google Chrome,Opera等 结构如下

[ id , user_agent , exact_match ]

我想阻止任何用户,如果他使用其中一个用户代理在我的表中被阻止,但也计算了exact_match的值。

例如,如果我将exact_match设置为1 (TRUE),我想对用户代理执行完整的字符串检查,但如果我设置为0 (FALSE),我想使用LIKE mysql查询。

如果我选择所有用户代理并依赖exact_match,我可以轻松地执行此操作,我可以执行stristr函数或只执行strcmp。

这可以仅使用一个sql查询而不是PHP代码来完成吗?

修改: 所有检查都应该使用不区分大小写的搜索来完成。

谢谢

1 个答案:

答案 0 :(得分:1)

这比你想象的容易得多。

SELECT id, user_agent, exact_match
FROM table
WHERE (exact_match = 1 AND user_agent = :USER_AGENT_EXACT)
OR (exact_match = 0 AND user_agent LIKE :USER_AGENT_LIKE)

然后准备你的陈述,然后用USER_AGENT_EXACTUSER_AGENT_LIKE绑定所需的字符串,然后离开!