mysql?count()函數不計算null和空值問題
mysql count()函數不計算null和空值
解決方案(二選一)
1. 在做統(tǒng)計時判斷count的字段不為null和空
SELECT workPost AS name,COUNT(workPost) as value FROM graduateinfo ? ? ? ?where workPost is not null and workPost != ''
2. 前端過濾數據
踩坑
網上大部分解決方案都是說count(字段)就能解決,我自己用了并沒有效果。
mysql中的空值 Null 和空字符‘‘
1. 空值 Null 和空字符 ''
日常開發(fā)中,一般都會涉及到數據庫增刪改查,那么不可避免會遇到 MySQL 中的 NULL 和空字符 '' ,二者表面上看都是空,其實存在一些差異的
- 空值
NULL的長度是NULL,不確定占用了多少存儲空間,它是占用存儲空間的 - 空字符串
''的長度是0,是不占用空間的
通俗的講:空字符串 '' 就像是一個真空狀態(tài)的杯子,什么都沒有;而空值 NULL 就像是一個裝滿空氣的杯子,是有東西的。二者雖然看起來都是空的、透明的,但是有著本質的區(qū)別
2. 空值 Null 和空字符 '' 在查詢方式上的對比
2.1. 創(chuàng)建 SQL 腳本
CREATE TABLE `test_1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4; --插入數據 INSERT INTO test_1 VALUES(1,'李斯','111111'); INSERT INTO test_1 VALUES(2,'',''); INSERT INTO test_1 VALUES(3,null,''); INSERT INTO test_1 VALUES(4,null,1);
表中的數據如下,注意 null 值與 '' 值

2.2. 查詢 username 列為空字符串 '' 的所有數據

2.3. 查詢 username 列為空值 null 的所有數據
- 2.3.1. 錯誤 SQL

- 2.3.2. 正確 SQL

2.4. 查詢 username 列不為空值 null 的所有數據
- 2.4.1. 錯誤 SQL

- 2.4.2. 正確 SQL

比較字符 =,>,< ,<> , != 都不能用于查詢比較 null 值,如果需要查詢空值 null ,必須使用 is null 或 is not null 空值 '' 可以使用 =, !=, <, > 等算術運算符來查詢的
3. 空值Null和空字符 '' 在 count() 函數查詢的對比
3.1. 查詢 username 列數據總數

使用 count() 的時候,空值 null 并不會被當成有效值去統(tǒng)計的空字符串 '' 是會被 count() 函數所統(tǒng)計的
4. MySQL中的比較運算符
| 運算符 | 含義 |
|---|---|
| = | 等于 |
| <=> | 安全等于,可以比較 null |
| <> 或 != | 不等于 |
| >= | 大于等于 |
| <= | 小于等于 |
| > | 大于 |
| < | 小于 |
| IS NULL | 判斷一個值是否為 null |
| IS NOT NULL | 判斷一個值是否不為 null |
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)
這篇文章主要介紹了Windows安裝MySQL8.0.28.0.msi,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
MySQL Threads_running飆升與慢查詢的相關問題解決
這篇文章主要介紹了MySQL Threads_running飆升與慢查詢的問題解決,幫助大家更好的理解和學習使用MySQL數據庫,感興趣的朋友可以了解下2021-05-05

