mysql?count()函數(shù)不計(jì)算null和空值問題
mysql count()函數(shù)不計(jì)算null和空值
解決方案(二選一)
1. 在做統(tǒng)計(jì)時(shí)判斷count的字段不為null和空
SELECT workPost AS name,COUNT(workPost) as value FROM graduateinfo ? ? ? ?where workPost is not null and workPost != ''
2. 前端過濾數(shù)據(jù)
踩坑
網(wǎng)上大部分解決方案都是說count(字段)就能解決,我自己用了并沒有效果。
mysql中的空值 Null 和空字符‘‘
1. 空值 Null 和空字符 ''
日常開發(fā)中,一般都會涉及到數(shù)據(jù)庫增刪改查,那么不可避免會遇到 MySQL
中的 NULL
和空字符 ''
,二者表面上看都是空,其實(shí)存在一些差異的
- 空值
NULL
的長度是NULL
,不確定占用了多少存儲空間,它是占用存儲空間的 - 空字符串
''
的長度是0
,是不占用空間的
通俗的講:空字符串 ''
就像是一個(gè)真空狀態(tài)的杯子,什么都沒有;而空值 NULL
就像是一個(gè)裝滿空氣的杯子,是有東西的。二者雖然看起來都是空的、透明的,但是有著本質(zhì)的區(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; --插入數(shù)據(jù) 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);
表中的數(shù)據(jù)如下,注意 null
值與 ''
值
2.2. 查詢 username
列為空字符串 ''
的所有數(shù)據(jù)
2.3. 查詢 username
列為空值 null
的所有數(shù)據(jù)
- 2.3.1. 錯(cuò)誤 SQL
- 2.3.2. 正確 SQL
2.4. 查詢 username
列不為空值 null
的所有數(shù)據(jù)
- 2.4.1. 錯(cuò)誤 SQL
- 2.4.2. 正確 SQL
比較字符 =,>,< ,<>
, !=
都不能用于查詢比較 null
值,如果需要查詢空值 null
,必須使用 is null
或 is not null
空值 ''
可以使用 =, !=, <, >
等算術(shù)運(yùn)算符來查詢的
3. 空值Null和空字符 '' 在 count() 函數(shù)查詢的對比
3.1. 查詢 username 列數(shù)據(jù)總數(shù)
使用 count()
的時(shí)候,空值 null
并不會被當(dāng)成有效值去統(tǒng)計(jì)的空字符串 ''
是會被 count()
函數(shù)所統(tǒng)計(jì)的
4. MySQL中的比較運(yùn)算符
運(yùn)算符 | 含義 |
---|---|
= | 等于 |
<=> | 安全等于,可以比較 null |
<> 或 != | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
IS NULL | 判斷一個(gè)值是否為 null |
IS NOT NULL | 判斷一個(gè)值是否不為 null |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- mysql count(*)分組之后IFNULL無效問題
- Sql根據(jù)不同條件統(tǒng)計(jì)總數(shù)的方法(count和sum)
- SQL中count(1)、count(*)?與?count(列名)的區(qū)別詳細(xì)解釋
- MySQL數(shù)據(jù)庫統(tǒng)計(jì)函數(shù)COUNT的使用及說明
- mysql數(shù)據(jù)庫之count()函數(shù)和sum()函數(shù)用法及區(qū)別說明
- mysql一條sql查出多個(gè)條件不同的sum或count問題
- MySQL中的count(*)?和?count(1)?區(qū)別性能對比分析
- SQL 中 COUNT 的用法示例詳解
相關(guān)文章
MySQL出現(xiàn)2003錯(cuò)誤的三種解決方法
本文主要介紹了MySQL出現(xiàn)2003錯(cuò)誤的解決方法,主要介紹了3種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)
這篇文章主要介紹了Windows安裝MySQL8.0.28.0.msi,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03MySQL Threads_running飆升與慢查詢的相關(guān)問題解決
這篇文章主要介紹了MySQL Threads_running飆升與慢查詢的問題解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2021-05-05Linux下mysql 5.7 部署及遠(yuǎn)程訪問配置
這篇文章主要為大家詳細(xì)介紹了Linux下mysql 5.7 部署及遠(yuǎn)程訪問的配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09MySQL處理重復(fù)數(shù)據(jù)插入的處理方案
在數(shù)據(jù)庫操作中,處理重復(fù)數(shù)據(jù)插入是一個(gè)常見的需求,特別是在批量插入數(shù)據(jù)時(shí),可能會遇到主鍵沖突或唯一鍵沖突(Duplicate entry)的情況,本文將以一個(gè)實(shí)際的Python MySQL數(shù)據(jù)庫操作為例,分析如何優(yōu)化異常處理邏輯,需要的朋友可以參考下2025-04-04