Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ฟังก์ชัน 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 เมื่อเราพยายามค้นหามูลค่าการประมูลทั้งหมดที่เสนอโดย 'Honda Group' เนื่องจากไม่มีค่าในคอลัมน์

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() เพื่อค้นหามูลค่าการประมูลทั้งหมดที่เสนอโดย 'Honda Group'

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)

ตอนนี้ ฟังก์ชัน MySQL SUM() จะคืนค่า 0 เมื่อเราใช้ฟังก์ชัน COALESCE กับ SUM() เพื่อค้นหาจำนวนหน้าที่พิมพ์โดย 'Mohan' ซึ่งเป็นชื่อที่ไม่อยู่ในคอลัมน์ 'Name' -

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 หากไม่มีค่าในคอลัมน์โดยไม่คำนึงถึงประเภทข้อมูล