如何在MySQL中存储(并找到)带有通配符的字符串?

Mad*_*vin 5 php mysql

我需要在其中存储带有通配符的IP地址,例如10.0.%.1.然后,我希望从我的查询中找到任何IP地址在允许范围(10.0.0-255.1)的人.

你能帮我吗?我已经尝试存储10.0.%.1但是找不到LIKE查询(我甚至不知道这是不是这样做 - 可能不是).

提前致谢.

Man*_*ert 2

将 ip 地址作为 4 个整数保存在数据库中怎么样:

IPpart1 IPpart2 IPpart3 IPpart4
-------------------------------
127     0       0       1
Run Code Online (Sandbox Code Playgroud)

并使它们可为空。(NULL 将成为我们的通配符)

然后您可以像这样对数据库进行查询:

SELECT * FROM iptable WHERE (IPpart1 IS NULL OR IPpart1 = '$firstpart') AND (IPpart2 IS NULL OR IPpart2 = '$secondpart') AND (IPpart3 IS NULL OR IPpart3 = '$thirdpart') AND (IPpart4 IS NULL OR IPpart4 = '$fourthpart')
Run Code Online (Sandbox Code Playgroud)

它有点冗长,但它可以完成工作。

甚至应该可以从普通的 IP 字段构造一个具有该结构的临时表,但如果您有很多请求,这将是很大的开销。