翻譯|使用教程|編輯:董玉霞|2022-04-19 15:01:35.770|閱讀 286 次
概述:本文主要介紹Navicat Premium最新版本中如何將 NULL 與 SQL Count() 函數(shù)結(jié)合以實(shí)現(xiàn)各種目標(biāo)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
本文主要介紹Navicat Premium最新版本中如何將 NULL 與 SQL Count() 函數(shù)結(jié)合以實(shí)現(xiàn)各種目標(biāo)。
Count() 函數(shù)有兩種形式:COUNT(*) 返回表中的所有行,而 COUNT(Expression) 忽略 Null 表達(dá)式。因此,如果你提供一個(gè)允許 NULL 值的列名,那么 Count() 將返回具有非 NULL 值的所有行。Count() 的這兩種不同的用法為我們?nèi)绾潍@得特定列的 NULL 值計(jì)數(shù)提供了重要線索。這是通過(guò)從總數(shù)字段中減去非 NULL 字段數(shù),如下所示:
SELECT COUNT(*) - COUNT(<Column Name>)
現(xiàn)在我們知道如何計(jì)算表中的 NULL 行、非 NULL 行和所有行,先看看一個(gè)例子。我們將對(duì) MySQL classicmodels 示例數(shù)據(jù)庫(kù)的 customers 表運(yùn)行此查詢。這是數(shù)據(jù)庫(kù)管理工具 Navicat Premium 的表設(shè)計(jì)器:
addressline2 字段包含不屬于街道名和號(hào)碼的其他地址詳細(xì)信息。因此,正如我們?cè)诖吮頂?shù)據(jù)示例中所見(jiàn),并非所有地址都需要它:
此查詢以三種方式使用 Count() 函數(shù)來(lái)顯示所有表行、有數(shù)據(jù)的 addressLine2 行數(shù)和 Null 值行數(shù):
SELECT COUNT(*) AS All_Rows, COUNT(addressLine2) AS addressLine2_Count, COUNT(*) - COUNT(addressLine2) AS Null_addressLine2_Rows FROM customers;
這是 Navicat Premium 的查詢?cè)O(shè)計(jì)器中的上述 SELECT 語(yǔ)句,以及結(jié)果:
正如預(yù)期的那樣,addressLine2_Count 和 Null_addressLine2_Rows 結(jié)果加起來(lái)就是 All_Rows 計(jì)數(shù)。
Count() 函數(shù)的 COUNT(Expression) 版本忽略 Null 表達(dá)式這一事實(shí)對(duì)于編譯有關(guān)表數(shù)據(jù)的統(tǒng)計(jì)信息非常有幫助,尤其是在與 SQL IF() 函數(shù)等其他函數(shù)結(jié)合使用時(shí),這基本上是三元運(yùn)算符的 SQL 等價(jià)物:
IF(predicate, true-value, false-value)
如果謂詞為 true,則 IF 計(jì)算為 true 值,或在下面的查詢中為 1。如果謂詞為 false,則計(jì)算結(jié)果為 false 值或 NULL,如下面的語(yǔ)句所示。然后 COUNT 將 IF 為 1(即謂詞為 true)的每一行制成表格:
SELECT count(IF(country = 'Australia', 1, NULL)) as Australia_Count, count(IF(country = 'Germany', 1, NULL)) as Germany_Count, count(IF(country = 'Canada' OR country = 'USA', 1, NULL)) as North_America_Count, count(IF(country like 'F%', 1, NULL)) as F_Countries_Count, count(IF(creditLimit between 20000 and 1000000, 1, NULL)) as CreditLimit_Range_Count, count(*) as Total_Count FROM customers WHERE dob >= '1960-01-01';
這是 Navicat 中的查詢和結(jié)果:
Navicat Premium 是一套數(shù)據(jù)庫(kù)管理工具,讓你使用一個(gè)程序即可同時(shí)連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫(kù)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn