|
mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002');
+-------------+ | count(name) | +-------------+ | 17629 | +-------------+ 1 row in set (0.02 sec) mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002', NULL); +-------------+ | count(name) | +-------------+ | 0 | +-------------+ 1 row in set (0.01 sec) 当在子查询中出现NULL的时候,结果就一定是0了。查了一下手册,确实有这样的说法。所以最后实际采用了这样的查询: SELECT COUNT(DISTINCT name) FROM CVE WHERE name NOT IN (SELECT cveID FROM cve_sig WHERE cveID IS NOT NULL) 顺便提一下MySQL中正则表达式匹配的简单使用: SELECT COUNT(alarmID) FROM Alarm WHERE (CVE NOT RLIKE '^CVE-[0-9]{4}-[0-9]{4}$' OR CVE IS NULL) 当然,RLIKE也可以写作REGEXP,我个人倾向于使用RLIKE,因为拼写接近LIKE,可以见名知义。 |
MySQL中NOT IN语句对NULL值的处理
最新推荐文章于 2025-03-21 10:56:16 发布
本文介绍了MySQL中处理NULL值的查询技巧,以及如何使用正则表达式进行模式匹配。通过具体示例展示了排除特定CVE编号及NULL值的方法,并给出了利用正则表达式筛选符合特定格式CVE编号的实用案例。

5548

被折叠的 条评论
为什么被折叠?



