美好的一天。
我遇到垃圾邮件发送者的问题,使用我的网站进行肮脏的目的。垃圾邮件发送者IP类似于111.111.11.11
- 完全静态,除了最后两个数字。我可以在一个SQL查询中以某种方式定位范围00
- 99
吗?
这就是我知道我可以处理它的方式(示例中没有动作):
SELECT * FROM myTable WHERE ip = 111.111.11.00
SELECT * FROM myTable WHERE ip = 111.111.11.01
SELECT * FROM myTable WHERE ip = 111.111.11.02
/* etc. */
我可以以某种方式通配最后两个数字,如:
SELECT * FROM myTable WHERE ip = 111.111.11.??
或循环浏览范围(最好直接在phpmyadmin中)
SELECT * FROM myTable WHERE ip = 111.111.11.00 -> 111.111.11.99
我一直在浏览MySQL参考手册,但我不太清楚我在寻找什么。非常感谢任何帮助。
亲切的问候, 麦
编辑:like
- 运算符是我正在寻找的。一个Wordpress插件故障开发者将得到应得的。感谢您的所有建议!
答案 0 :(得分:1)
这是一个想法。请注意,如上所述,此解决方案无法使用索引...
SELECT * FROM my_table WHERE INET_ATON(ip) BETWEEN 1869548288 AND 1869548387;
答案 1 :(得分:0)
SELECT * FROM myTable WHERE ip BETWEEN '111.111.11.00' AND '111.111.11.99'
或
SELECT * FROM myTable WHERE ip LIKE '111.111.11.__'
答案 2 :(得分:0)
Thorten的like
是处理特定问题的最简单方法。如果您有更通用的范围,那么您可以使用right()
:
WHERE RIGHT(ip, 13) BETWEEN '111.111.11.00' AND '111.111.11.99'