如何將 MySQL COALESCE() 函式與 MySQL SUM() 函式一起使用來自定義輸出?
當 MySQL SUM() 函式獲取一個沒有值的列作為引數時,它將返回 NULL,而不是 0 作為輸出。但是,如果我們想要自定義此輸出以顯示 0 作為輸出,則可以使用 MySQL COALESCE() 函式,該函式接受兩個引數,如果第一個引數為 NULL,則返回第二個引數,否則返回第一個引數。為了說明這一點,我們以“招標”表為例,該表包含以下資料:
mysql> Select * from tender; +----+---------------+--------------+ | Sr | CompanyName | Tender_value | +----+---------------+--------------+ | 1 | Abc Corp. | 250.369003 | | 2 | Khaitan Corp. | 265.588989 | | 3 | Singla group. | 220.255997 | | 4 | Hero group. | 221.253006 | | 5 | Honda group | NULL | +----+---------------+--------------+ 5 rows in set (0.00 sec)
當我們嘗試查詢“本田集團”報出的總投標價值時,MySQL SUM() 函式返回 NULL,因為它在列中沒有值。
mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group'; +-------------------+ | SUM(Tender_value) | +-------------------+ | NULL | +-------------------+ 1 row in set (0.00 sec)
但是,假設如果我們想將此輸出從 NULL 自定義為 0,則可以使用 COALESCE 函式與 SUM() 一起查詢“本田集團”報出的總投標價值。
mysql> Select COALESCE(SUM(Tender_value),0) From Tender Where CompanyName = 'Honda Group'; +-------------------------------+ | COALESCE(SUM(Tender_value),0) | +-------------------------------+ | 0.000000 | +-------------------------------+ 1 row in set (0.00 sec)
現在,當我們使用 COALESCE 函式與 SUM() 一起查詢“Mohan”(“姓名”列中不存在的姓名)鍵入的總頁數時,MySQL SUM() 函式返回 0:
mysql> SELECT COALESCE(SUM(daily_typing_pages),0) FROM employee_tbl WHERE Name = ‘Mohan’; +-------------------------+ | SUM(daily_typing_pages) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.00 sec)
從以上結果集中可以清楚地看出,如果列中沒有值,無論其資料型別如何,MySQL SUM() 函式都將返回 NULL。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP