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ā)中,一般都會(huì)涉及到數(shù)據(jù)庫增刪改查,那么不可避免會(huì)遇到 MySQL 中的 NULL 和空字符 '' ,二者表面上看都是空,其實(shí)存在一些差異的
- 空值
NULL的長度是NULL,不確定占用了多少存儲(chǔ)空間,它是占用存儲(chǔ)空間的 - 空字符串
''的長度是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 并不會(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無效問題
- 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)文章
Mysql8.4.3LTS中離線部署的實(shí)現(xiàn)示例
本文詳細(xì)介紹了在Ubuntu 24.04系統(tǒng)上離線部署MySQL 8.4.3 LTS,包括環(huán)境配置、安裝步驟等步驟,對小白有一定的幫助,感興趣的可以了解一下2024-11-11
ubuntu系統(tǒng)中Mysql ERROR 1045 (28000): Acces
這篇文章主要介紹了ubuntu系統(tǒng)安裝mysql登陸提示 解決Mysql ERROR 1045 (28000): Access denied for user root@ localhost問題,需要的朋友可以參考下2017-05-05
mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)詳解
這篇文章主要給大家介紹了關(guān)于mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)的相關(guān)資料,在MySQL 數(shù)據(jù)庫中進(jìn)行復(fù)雜的查詢語句,例如對多個(gè)字段進(jìn)行篩選和排序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
Jmeter如何向數(shù)據(jù)庫批量插入數(shù)據(jù)
這篇文章主要介紹了Jmeter如何向數(shù)據(jù)庫批量插入數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作
這篇文章主要介紹了mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作,修改表指的是修改數(shù)據(jù)庫之后中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)2022-07-07
MySQL 存儲(chǔ)引擎InnoDB 架構(gòu)與原理深度解析
這篇文章詳細(xì)介紹了MySQL中InnoDB和MyISAM兩種主要存儲(chǔ)引擎的特性、區(qū)別和使用場景,探討了InnoDB的頁結(jié)構(gòu)、分層存儲(chǔ)結(jié)構(gòu)以及其在事務(wù)管理、崩潰恢復(fù)和并發(fā)控制方面的優(yōu)勢,感興趣的朋友跟隨小編一起看看吧2026-03-03
mysql如何將查詢結(jié)果內(nèi)容進(jìn)行轉(zhuǎn)換
文章介紹了如何在MySQL中使用CASE表達(dá)式對查詢結(jié)果進(jìn)行多分支判斷,并分享了個(gè)人經(jīng)驗(yàn),希望對大家有所幫助2025-02-02
sphinxql如何得到結(jié)果數(shù)及show meta的詳細(xì)說明
想用sphinxql只得到結(jié)果數(shù)。跟mysql里的count(*)一樣2013-02-02

