ການຫຼີ້ນການຂອງ NULL SQL
- ຫນ້າຫນັງກ່ອນ SQL Nulls
- ຫນ້າຫນັງ ຄຳສັບຂອງບັນດາວັດສະດຸ SQL
ກູມງານ ISNULL()、NVL()、IFNULL() ແລະ COALESCE()
ບັນທຶກ "Products" ດັ່ງຕໍ່ມາ:
P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
1 | computer | 699 | 25 | 15 |
2 | printer | 365 | 36 | |
3 | telephone | 280 | 159 | 57 |
ຖ້າ "UnitsOnOrder" ເປັນປະໂຫຍດ ແລະ ສາມາດກວມເອົາຄວາມບໍ່ມີຄວາມຕ້ອງການ NULL.
ພວກເຮົາໃຊ້ຄຳສັ່ງ SELECT ດັ່ງຕໍ່ມາ:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder) FROM Products
ໃນຄຳຂໍ້ທີ່ນີ້, ຖ້າມີ "UnitsOnOrder" ມີຄຸນຄ່າຄວາມລັບຄວາມລຽບນັ້ນ, ຜົນຈະມີຄຸນຄ່າຄວາມລັບຄວາມລຽບ.
ກອງການ ISNULL() ຂອງ Microsoft ຖືກນຳໃຊ້ເພື່ອກໍານົດວິທີການດຳເນີນຂອງຄຸນຄ່າຄວາມລັບຄວາມລຽບ.
ກອງການ NVL(), IFNULL() ແລະ COALESCE() ບັນຈຸສຳລັບຜົນຄືກັບນັ້ນ.
ບ່ອນນີ້, ພວກເຮົາຕ້ອງການໃຫ້ຄຸນຄ່າຈະມີຄືກັບ 0.
ຫນ້າຫນັງ, ຖ້າ "UnitsOnOrder" ມີຄວາມລັບຄວາມລຽບຈະບໍ່ມີຜົນດີສຳລັບການທີ່ລາວສະແດງ, ຖ້າຄຸນຄ່າແມ່ນຄວາມລັບຄວາມລຽບນັ້ນ ISNULL() ຈະກັບຄືກັບ 0.
SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0)) FROM Products
Oracle
Oracle ບໍ່ມີກອງການ ISNULL(). ແຕ່ພວກເຮົາສາມາດໃຊ້ກອງການ NVL() ເພື່ອຮັບຜົນຄືກັບນັ້ນ:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0)) FROM Products
MySQL
MySQL ຍັງມີກອງການຄືກັບ ISNULL(). ແຕ່ວ່າວິທີການດຳເນີນຂອງມັນບໍ່ຄືກັບກອງການ ISNULL() ຂອງ Microsoft.
ໃນ MySQL, ພວກເຮົາສາມາດໃຊ້ກອງການ IFNULL() ຄືກັບນັ້ນ:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0)) FROM Products
ຫຼືພວກເຮົາສາມາດໃຊ້ກອງການ COALESCE() ຄືກັບນັ້ນ:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0)) FROM Products
- ຫນ້າຫນັງກ່ອນ SQL Nulls
- ຫນ້າຫນັງ ຄຳສັບຂອງບັນດາວັດສະດຸ SQL