Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NOT IN和NOT LIKE从MySQL表中排除条目_Mysql - Fatal编程技术网

使用NOT IN和NOT LIKE从MySQL表中排除条目

使用NOT IN和NOT LIKE从MySQL表中排除条目,mysql,Mysql,MySQL数据库中的一个表以短十六进制格式保存IP地址,即“C0A80001”。我想在此表中选择1000个最新条目,排除任何'NULL','8.8.8.8','192.168.*','10.*.*.'条目和B类网络(我还没有确定如何排除) 如果没有例外情况,我有: SELECT IP_Address FROM Event_Table ORDER BY Time_Created DESC LIMIT 0, 1000; 当然,这很有效。当我添加排除时,我会遇到错误: SELECT IP_Addre

MySQL数据库中的一个表以短十六进制格式保存IP地址,即“C0A80001”。我想在此表中选择1000个最新条目,排除任何'NULL','8.8.8.8','192.168.*','10.*.*.'条目和B类网络(我还没有确定如何排除)

如果没有例外情况,我有:

SELECT IP_Address
FROM Event_Table
ORDER BY Time_Created
DESC LIMIT 0, 1000;
当然,这很有效。当我添加排除时,我会遇到错误:

SELECT IP_Address
FROM event_table
sourceIPAddr NOT IN ('NULL', '08080808') AND
(排除“空”条目和“8.8.8.8”)

(不包括'192.168.*。)*

(不包括“10”。)


如果您真的想节省空间,我建议您将IP地址和网络掩码存储为整数值。它比十六进制值方便得多(我想知道你为什么选择这样做)

MySQL为此提供了两个函数,将IP地址转换为整数值,反之亦然

排除NULL和8.8.8.8

SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) IS NOT NULL 
AND INET_NTOA(sourceIPAddr) != '8.8.8.8';
排除192.168

要排除10*

%
中,LIKE
表示“任何给定字符的零次或多次,实际上也是任何字符的零次或多次”。你当然可以使用

SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) NOT LIKE '10.%.%.%';

为了确保,中间有点,但没有必要。使用类似于
like('whatever%%')
的东西也没什么区别。要搜索单个字符,该字符必须存在(没有“一个字符0或1次”),您可以使用下划线

我看不到
WHERE
关键字。你是不是忘了把它放在
event\u table
条目之后了?你遇到了什么错误?是缺少了“WHERE”,我现在觉得很愚蠢!不管怎样,谢谢你的注意,卡雷尔。谢谢你的帮助,这实际上是一个数据库,我从中获取了一个提要,不是我的,所以我只有只读访问权限。我有一个脚本可以将十六进制转换成正确的IP格式-我只需要这个select语句首先获得IP(而不包括我提到的那些)。
ORDER BY Time_Created
DESC LIMIT 0, 1000;
SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) IS NOT NULL 
AND INET_NTOA(sourceIPAddr) != '8.8.8.8';
SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) NOT LIKE '192.168.%';
SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) NOT LIKE '10.%';
SELECT IP_Address
FROM event_table
WHERE
INET_NTOA(sourceIPAddr) NOT LIKE '10.%.%.%';