翻譯|使用教程|編輯:董玉霞|2022-04-19 15:01:35.770|閱讀 286 次
概述:本文主要介紹Navicat Premium最新版本中如何將 NULL 與 SQL Count() 函數結合以實現各種目標。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本文主要介紹Navicat Premium最新版本中如何將 NULL 與 SQL Count() 函數結合以實現各種目標。
Count() 函數有兩種形式:COUNT(*) 返回表中的所有行,而 COUNT(Expression) 忽略 Null 表達式。因此,如果你提供一個允許 NULL 值的列名,那么 Count() 將返回具有非 NULL 值的所有行。Count() 的這兩種不同的用法為我們如何獲得特定列的 NULL 值計數提供了重要線索。這是通過從總數字段中減去非 NULL 字段數,如下所示:
SELECT COUNT(*) - COUNT(<Column Name>)
現在我們知道如何計算表中的 NULL 行、非 NULL 行和所有行,先看看一個例子。我們將對 MySQL classicmodels 示例數據庫的 customers 表運行此查詢。這是數據庫管理工具 Navicat Premium 的表設計器:
addressline2 字段包含不屬于街道名和號碼的其他地址詳細信息。因此,正如我們在此表數據示例中所見,并非所有地址都需要它:
此查詢以三種方式使用 Count() 函數來顯示所有表行、有數據的 addressLine2 行數和 Null 值行數:
SELECT COUNT(*) AS All_Rows, COUNT(addressLine2) AS addressLine2_Count, COUNT(*) - COUNT(addressLine2) AS Null_addressLine2_Rows FROM customers;
這是 Navicat Premium 的查詢設計器中的上述 SELECT 語句,以及結果:
正如預期的那樣,addressLine2_Count 和 Null_addressLine2_Rows 結果加起來就是 All_Rows 計數。
Count() 函數的 COUNT(Expression) 版本忽略 Null 表達式這一事實對于編譯有關表數據的統計信息非常有幫助,尤其是在與 SQL IF() 函數等其他函數結合使用時,這基本上是三元運算符的 SQL 等價物:
IF(predicate, true-value, false-value)
如果謂詞為 true,則 IF 計算為 true 值,或在下面的查詢中為 1。如果謂詞為 false,則計算結果為 false 值或 NULL,如下面的語句所示。然后 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 中的查詢和結果:
Navicat Premium 是一套數據庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數據庫。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn