使用语句

时间:2016-11-09 11:49:32

标签: mysql sql

美好的一天。

我遇到垃圾邮件发送者的问题,使用我的网站进行肮脏的目的。垃圾邮件发送者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插件故障开发者将得到应得的。感谢您的所有建议!

3 个答案:

答案 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'