天天看點

mysql in 為空_MySQL中NOT IN語句對NULL值的處理

順便提一下MySQL中正規表達式比對的簡單使用:SELECT COUNT(alarmID)FROM AlarmWHERE (CVE NOT RLIKE

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 in 為空_MySQL中NOT IN語句對NULL值的處理

mysql in 為空_MySQL中NOT IN語句對NULL值的處理

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!