mysql?count()函數(shù)不計(jì)算null和空值問(wèn)題
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. 前端過(guò)濾數(shù)據(jù)
踩坑
網(wǎng)上大部分解決方案都是說(shuō)count(字段)就能解決,我自己用了并沒(méi)有效果。
mysql中的空值 Null 和空字符‘‘
1. 空值 Null 和空字符 ''
日常開(kāi)發(fā)中,一般都會(huì)涉及到數(shù)據(jù)庫(kù)增刪改查,那么不可避免會(huì)遇到 MySQL 中的 NULL 和空字符 '' ,二者表面上看都是空,其實(shí)存在一些差異的
- 空值
NULL的長(zhǎng)度是NULL,不確定占用了多少存儲(chǔ)空間,它是占用存儲(chǔ)空間的 - 空字符串
''的長(zhǎng)度是0,是不占用空間的
通俗的講:空字符串 '' 就像是一個(gè)真空狀態(tài)的杯子,什么都沒(méi)有;而空值 NULL 就像是一個(gè)裝滿(mǎn)空氣的杯子,是有東西的。二者雖然看起來(lái)都是空的、透明的,但是有著本質(zhì)的區(qū)別
2. 空值 Null 和空字符 '' 在查詢(xún)方式上的對(duì)比
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. 查詢(xún) username 列為空字符串 '' 的所有數(shù)據(jù)

2.3. 查詢(xún) username 列為空值 null 的所有數(shù)據(jù)
- 2.3.1. 錯(cuò)誤 SQL

- 2.3.2. 正確 SQL

2.4. 查詢(xún) username 列不為空值 null 的所有數(shù)據(jù)
- 2.4.1. 錯(cuò)誤 SQL

- 2.4.2. 正確 SQL

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

使用 count() 的時(shí)候,空值 null 并不會(huì)被當(dāng)成有效值去統(tǒng)計(jì)的空字符串 '' 是會(huì)被 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無(wú)效問(wèn)題
- Sql根據(jù)不同條件統(tǒng)計(jì)總數(shù)的方法(count和sum)
- SQL中count(1)、count(*)?與?count(列名)的區(qū)別詳細(xì)解釋
- MySQL數(shù)據(jù)庫(kù)統(tǒng)計(jì)函數(shù)COUNT的使用及說(shuō)明
- mysql數(shù)據(jù)庫(kù)之count()函數(shù)和sum()函數(shù)用法及區(qū)別說(shuō)明
- mysql一條sql查出多個(gè)條件不同的sum或count問(wèn)題
- MySQL中的count(*)?和?count(1)?區(qū)別性能對(duì)比分析
- SQL 中 COUNT 的用法示例詳解
相關(guān)文章
MySQL出現(xiàn)2003錯(cuò)誤的三種解決方法
本文主要介紹了MySQL出現(xiàn)2003錯(cuò)誤的解決方法,主要介紹了3種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
MySQL字段值如何區(qū)分大小寫(xiě)問(wèn)題
這篇文章主要介紹了MySQL字段值如何區(qū)分大小寫(xiě)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)
這篇文章主要介紹了Windows安裝MySQL8.0.28.0.msi,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
MySQL Threads_running飆升與慢查詢(xún)的相關(guān)問(wèn)題解決
這篇文章主要介紹了MySQL Threads_running飆升與慢查詢(xún)的問(wèn)題解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-05-05
Linux下mysql 5.7 部署及遠(yuǎn)程訪(fǎng)問(wèn)配置
這篇文章主要為大家詳細(xì)介紹了Linux下mysql 5.7 部署及遠(yuǎn)程訪(fǎng)問(wèn)的配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
MySQL處理重復(fù)數(shù)據(jù)插入的處理方案
在數(shù)據(jù)庫(kù)操作中,處理重復(fù)數(shù)據(jù)插入是一個(gè)常見(jiàn)的需求,特別是在批量插入數(shù)據(jù)時(shí),可能會(huì)遇到主鍵沖突或唯一鍵沖突(Duplicate entry)的情況,本文將以一個(gè)實(shí)際的Python MySQL數(shù)據(jù)庫(kù)操作為例,分析如何優(yōu)化異常處理邏輯,需要的朋友可以參考下2025-04-04
深入理解Mysql事務(wù)隔離級(jí)別與鎖機(jī)制問(wèn)題
MySQL默認(rèn)的事務(wù)隔離級(jí)別是可重復(fù)讀,用Spring開(kāi)發(fā)程序時(shí),如果不設(shè)置隔離級(jí)別默認(rèn)用MySQL設(shè)置的隔離級(jí)別,如果Spring設(shè)置了就用已設(shè)置的隔離級(jí)別,本文重點(diǎn)給大家介紹Mysql事務(wù)隔離級(jí)別與鎖機(jī)制的相關(guān)知識(shí),一起看看吧2021-09-09

